
使用PHP写的,源码我就不贴上来了,写的比较简单,先是读取了csv的第一行,根据这个创建了表格,然后再利用sql自带的语句 “load data infile....”将剩下的数据读入到这个表格中。但是刚好服务器的后台command line 执行的php没有安装好,放在browser上的话处理数据又不太适合,于是我就自己写了一个简单的Python的脚本。
首先csv读入MySQL 可以使用sql语句直接读入 代码如下:
[sql] view plain copy
LOAD DATA INFILE 'csv_file'
IGNORE INTO TABLE table_name
CHARACTER SET UTF8
FIELDS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
但是这样读入的前提是必须创建一个table之后才能导入到指定的table,下面就是用python先提取了首行(前提是首行就是table的fields),然后再利用上面的sql语句把剩下的导入:
[python] view plain copy
#coding=utf-8
import csv
import sys
import codecs
import MySQLdb
reload(sys)
sys.setdefaultencoding('utf-8')
csv_filename=sys.argv[1]
database=sys.argv[2]
table_name=sys.argv[3]
file=codecs.open(csv_filename,'r','utf-8')
reader=file.readline()
b=reader.split(',')
colum=''
for a in b:
colum=colum+a+' varchar(255),'
colum=colum[:-1]
create='create table if not exists '+table_name+' '+'('+colum+')'+' DEFAULT CHARSET=utf8'
data='LOAD DATA LOCAL INFILE \''+csv_filename+'\' INTO TABLE '+table_name +' character set utf8 FIELDS TERMINATED BY \',\' ENCLOSED BY \'\"\' LINES TERMINATED BY \''+r'\r\n'+'\' IGNORE 1 LINES;'
e=unicode(data,'utf8')
conn=MySQLdb.connect(
host='localhost',
port=3306,
user='root',
passwd='',
db=database)
conn.set_character_set('utf8')
cursor=conn.cursor()
cursor.execute('SET NAMES utf8;')
cursor.execute('SET character_set_connection=utf8;')
cursor.execute(create)
cursor.execute(e)
cursor.rowcount
conn.commit()
cursor.close()
print('OK')
用法在命令行中: python csv_to_sql.py csv_file database_name table_name
第一个参数csv文件(可以不和python脚本放在一个位置,路径写对就可以,不过放在一起更方便)
第二个参数选择存放的数据库名
第三个需要存入的表格名字。(不需要再去单独建立表格)
直接在命令行运行,没有报error错误就可以(会报warnning没关系)
这里有一点要注意的是,从代码就可以看出,创建的table的字段都是定义好的了,都是varchar(255),如果需要修改的话,可以到数据库根据自己的需要修改相应的field的属性。
另外一点就是csv中文的问题了,我要导入就是至少几十M的中文数据,所以一开始也遇到了点麻烦(不过Python对中文的支持也不是很好)。这里要先明白一个问题就是csv的文件是什么编码的,我的 csv是utf8编码的,如果不是utf8最好先转成utf8的编码格式。上面的代码是在Linux服务器下测试成功的,如果是windows的话,有问题也因该是编码的问题。
还有就是创建数据库的时候也一定要记得统一用utf8的格式
1、建立数据库连接后
2、建立数据库游标后:
SET NAMES 'utf8';
它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
3、创建表格的时候在表格后面加上:
这样就没有问题,其实就是要保证在整个数据流动过程中的编码要一致就可以了
ps:python有 CSV模块可以而支持读写csv文件,不过由于我只是提取一行建立表格所以就这里就没有用,不过我也尝试了一下,csv模块,如果要读取csv内容的话可以用这个模块,但是这个模块只支持utf8格式的,其它的格式的需要转码一下,这个看官方文档就可以了。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
CDA认证:数据时代的职业通行证 当海通证券的交易大厅里闪烁的屏幕实时跳动着市场数据,当苏州银行的数字金融部连夜部署新的风控 ...
2025-06-24金融行业的大数据变革:五大应用案例深度解析 在数字化浪潮中,金融行业正经历着深刻的变革,大数据技术的广泛应用 ...
2025-06-24Power Query 中实现移动加权平均的详细指南 在数据分析和处理中,移动加权平均是一种非常有用的计算方法,它能够根据不同数据 ...
2025-06-24数据驱动营销革命:解析数据分析在网络营销中的核心作用 在数字经济蓬勃发展的当下,网络营销已成为企业触达消费者 ...
2025-06-23随机森林模型与 OPLS-DA 的优缺点深度剖析 在数据分析与机器学习领域,随机森林模型与 OPLS-DA(正交偏最小二乘法判 ...
2025-06-23CDA 一级:开启数据分析师职业大门的钥匙 在数字化浪潮席卷全球的今天,数据已成为企业发展和决策的核心驱动力,数据分析师 ...
2025-06-23透视表内计算两个字段乘积的实用指南 在数据处理与分析的过程中,透视表凭借其强大的数据汇总和整理能力,成为了众多数据工 ...
2025-06-20CDA 一级考试备考时长全解析,助你高效备考 CDA(Certified Data Analyst)一级认证考试,作为数据分析师领域的重要资格认证, ...
2025-06-20统计学模型:解锁数据背后的规律与奥秘 在数据驱动决策的时代,统计学模型作为挖掘数据价值的核心工具,发挥着至关重要的作 ...
2025-06-20Logic 模型特征与选择应用:构建项目规划与评估的逻辑框架 在项目管理、政策制定以及社会服务等领域,Logic 模型(逻辑模型 ...
2025-06-19SPSS 中的 Mann-Kendall 检验:数据趋势与突变分析的利器 在数据分析的众多方法中,Mann-Kendall(MK)检验凭借其对数据分 ...
2025-06-19CDA 数据分析能力与 AI 的一体化发展关系:重塑数据驱动未来 在数字化浪潮奔涌的当下,数据已然成为企业乃至整个社会发展进 ...
2025-06-19CDA 干货分享:统计学的应用 在数据驱动业务发展的时代浪潮中,统计学作为数据分析的核心基石,发挥着无可替代的关键作用。 ...
2025-06-18CDA 精益业务数据分析:解锁企业增长新密码 在数字化浪潮席卷全球的当下,数据已然成为企业最具价值的资产之一。如何精准地 ...
2025-06-18CDA 培训:开启数据分析师职业大门的钥匙 在大数据时代,数据分析师已成为各行业竞相争夺的关键人才。CDA(Certified Data ...
2025-06-18CDA 人才招聘市场分析:机遇与挑战并存 在数字化浪潮席卷各行业的当下,数据分析能力成为企业发展的核心竞争力之一,持有 C ...
2025-06-17CDA金融大数据案例分析:驱动行业变革的实践与启示 在金融行业加速数字化转型的当下,大数据技术已成为金融机构提升 ...
2025-06-17CDA干货:SPSS交叉列联表分析规范与应用指南 一、交叉列联表的基本概念 交叉列联表(Cross-tabulation)是一种用于展示两个或多 ...
2025-06-17TMT行业内审内控咨询顾问 1-2万 上班地址:朝阳门北大街8号富华大厦A座9层 岗位描述 1、为客户提供高质量的 ...
2025-06-16一文读懂 CDA 数据分析师证书考试全攻略 在数据行业蓬勃发展的今天,CDA 数据分析师证书成为众多从业者和求职者提升竞争力的重要 ...
2025-06-16