如何通过Python将CSV文件导入MySQL数据库 |
您所在的位置:网站首页 › python导出数据库数据集 › 如何通过Python将CSV文件导入MySQL数据库 |
CSV文件导入数据库一般有两种方法: 1、通过SQL的insert方法一条一条导入,适合数据量小的CSV文件,这里不做赘述。 2、通过load data方法导入,速度快,适合大数据文件,也是本文的重点。 样本CSV文件如下: 总体工作分为3步: 1、用python连接mysql数据库,可参考如何使用python连接数据库? 2、基于CSV文件表格字段创建表 3、使用load data方法导入CSV文件内容 load data语法简介: LOAD DATA LOCAL INFILE 'csv_file_path' INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\\r\\n' IGNORE 1 LINEScsv_file_path 指文件绝对路径 table_name 指表名称 FIELDS TERMINATED BY ',' 指以逗号分隔 LINES TERMINATED BY '\\r\\n' 指换行 IGNORE 1 LINES 指跳过第一行,因为第一行是表的字段名 下面给出全部代码: 下面给出全部代码: #导入pymysql方法 import pymysql #连接数据库 config = {'host':'', 'port':3306, 'user':'evdata', 'passwd':'', 'charset':'utf8mb4', 'local_infile':1 } conn = pymysql.connect(**config) cur = conn.cursor() #load_csv函数,参数分别为csv文件路径,表名称,数据库名称 def load_csv(csv_file_path,table_name,database='evdata'): #打开csv文件 file = open(csv_file_path, 'r',encoding='utf-8') #读取csv文件第一行字段名,创建表 reader = file.readline() b = reader.split(',') colum = '' for a in b: colum = colum + a + ' varchar(255),' colum = colum[:-1] #编写sql,create_sql负责创建表,data_sql负责导入数据 create_sql = 'create table if not exists ' + table_name + ' ' + '(' + colum + ')' + ' DEFAULT CHARSET=utf8' data_sql = "LOAD DATA LOCAL INFILE '%s' INTO TABLE %s FIELDS TERMINATED BY ',' LINES TERMINATED BY '\\r\\n' IGNORE 1 LINES" % (csv_filename,table_name) #使用数据库 cur.execute('use %s' % database) #设置编码格式 cur.execute('SET NAMES utf8;') cur.execute('SET character_set_connection=utf8;') #执行create_sql,创建表 cur.execute(create_sql) #执行data_sql,导入数据 cur.execute(data_sql) conn.commit() #关闭连接 conn.close() cur.close()出现的问题: 我是用win10系统,代码执行时会出现以下错误 ERROR 1148 (42000): The used command is not allowed with this MySQL version. 原因是不支持命令 load data 解决方法: 需要更改下配置文件 在mysql安装目录中找到my.ini配置文件,复制以下内容到文件中 [mysqld] #服务端配置 local-infle = 1 [mysql] #客户端配置 local-infile = 1 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |