京公网安备 11010802034615号
经营许可证编号:京B2-20210330
使用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
在神经网络模型搭建中,“最后一层是否添加激活函数”是新手常困惑的关键问题——有人照搬中间层的ReLU激活,导致回归任务输出异 ...
2025-12-05在机器学习落地过程中,“模型准确率高但不可解释”“面对数据噪声就失效”是两大核心痛点——金融风控模型若无法解释决策依据, ...
2025-12-05在CDA(Certified Data Analyst)数据分析师的能力模型中,“指标计算”是基础技能,而“指标体系搭建”则是区分新手与资深分析 ...
2025-12-05在回归分析的结果解读中,R方(决定系数)是衡量模型拟合效果的核心指标——它代表因变量的变异中能被自变量解释的比例,取值通 ...
2025-12-04在城市规划、物流配送、文旅分析等场景中,经纬度热力图是解读空间数据的核心工具——它能将零散的GPS坐标(如外卖订单地址、景 ...
2025-12-04在CDA(Certified Data Analyst)数据分析师的指标体系中,“通用指标”与“场景指标”并非相互割裂的两个部分,而是支撑业务分 ...
2025-12-04每到“双十一”,电商平台的销售额会迎来爆发式增长;每逢冬季,北方的天然气消耗量会显著上升;每月的10号左右,工资发放会带动 ...
2025-12-03随着数字化转型的深入,企业面临的数据量呈指数级增长——电商的用户行为日志、物联网的传感器数据、社交平台的图文视频等,这些 ...
2025-12-03在CDA(Certified Data Analyst)数据分析师的工作体系中,“指标”是贯穿始终的核心载体——从“销售额环比增长15%”的业务结论 ...
2025-12-03在神经网络训练中,损失函数的数值变化常被视为模型训练效果的“核心仪表盘”——初学者盯着屏幕上不断下降的损失值满心欢喜,却 ...
2025-12-02在CDA(Certified Data Analyst)数据分析师的日常工作中,“用部分数据推断整体情况”是高频需求——从10万条订单样本中判断全 ...
2025-12-02在数据预处理的纲量统一环节,标准化是消除量纲影响的核心手段——它将不同量级的特征(如“用户年龄”“消费金额”)转化为同一 ...
2025-12-02在数据驱动决策成为企业核心竞争力的今天,A/B测试已从“可选优化工具”升级为“必选验证体系”。它通过控制变量法构建“平行实 ...
2025-12-01在时间序列预测任务中,LSTM(长短期记忆网络)凭借对时序依赖关系的捕捉能力成为主流模型。但很多开发者在实操中会遇到困惑:用 ...
2025-12-01引言:数据时代的“透视镜”与“掘金者” 在数字经济浪潮下,数据已成为企业决策的核心资产,而CDA数据分析师正是挖掘数据价值的 ...
2025-12-01数据分析师的日常,常始于一堆“毫无章法”的数据点:电商后台导出的零散订单记录、APP埋点收集的无序用户行为日志、传感器实时 ...
2025-11-28在MySQL数据库运维中,“query end”是查询执行生命周期的收尾阶段,理论上耗时极短——主要完成结果集封装、资源释放、事务状态 ...
2025-11-28在CDA(Certified Data Analyst)数据分析师的工具包中,透视分析方法是处理表结构数据的“瑞士军刀”——无需复杂代码,仅通过 ...
2025-11-28在统计分析中,数据的分布形态是决定“用什么方法分析、信什么结果”的底层逻辑——它如同数据的“性格”,直接影响着描述统计的 ...
2025-11-27在电商订单查询、用户信息导出等业务场景中,技术人员常面临一个选择:是一次性查询500条数据,还是分5次每次查询100条?这个问 ...
2025-11-27