csv文件快速转存到mysql

连接数据库

连接数据库:
con = pymysql.connect(user="root",
passwd="root",
db="test",
host="47.95.xxx.xxx",
local_infile=1) 将csv批量写到数据库,需要设置local_infile参数,如果不添加会报错。! 连接完数据库我们便可以使用游标来执行sql语句了: cur = con.cursor()
定义好了游标我们就可以使用execute方法来执行sql语句了。 cur.execute("set names utf8")
cur.execute("SET character_set_connection=utf8;")

读取csv文件内容:

with open(file_path, 'r', encoding='utf8') as f:
reader = f.readline()
print(reader)
devide = reader.split(',') # 做成列表
devide[-1] = devide[-1].rstrip('\n') # 去除最后的换行符
print(devide)

创表:

需要创建表,在创建表之前我们需要将每个列指定一下格式:

column = ''
for dd in devide:
column = column + dd + ' varchar(255),' 拼接好后我们需要将最后一个列的逗号去掉
col = column.rstrip(',') 创建表:
table_name = "TBexport"
create_table_sql = 'create table if not exists {} ({}) DEFAULT CHARSET=utf8'\
.format(table_name, col)
cur.execute(create_table_sql) 插入数据的语句: file_path = "export.csv"
data = 'LOAD DATA LOCAL INFILE \'' + file_path \
+ '\'REPLACE INTO TABLE ' \
+ table_name \
+ 'CHARACTER SET UTF8 FIELDS TERMINATED BY \',' \
'\' ENCLOSED BY \'\"\' ' \
'LINES TERMINATED BY \'\n\' IGNORE 1 LINES;'
cur.execute(data.encode('utf8')) con.commit() # 提交事务 关闭游标和数据库连接。
cur.close()
con.close()

csv数据导入样式:

mysql支持csv数据的导入,以下是sql的语法:

LOAD DATA INFILE '文件名'
REPLACE INTO TABLE 表名
CHARACTER SET UTF8
FIELDS TERMINATED BY ';' ENCLOSED BY '"'
LINES TERMINATED BY '\n'

完整脚本:

import pymysql

# file_path = "exam.csv"
# table_name = 'update_time_table'
file_path = "export.csv"
table_name = "TBexport"
try:
con = pymysql.connect(user="root",
passwd="root",
db="test",
host="47.95.20x.xxx",
local_infile=1)
con.set_charset('utf8')
cur = con.cursor()
cur.execute("set names utf8")
cur.execute("SET character_set_connection=utf8;") with open(file_path, 'r', encoding='utf8') as f:
reader = f.readline()
print(reader)
devide = reader.split(',') # 做成列表
devide[-1] = devide[-1].rstrip('\n') # 去除最后的换行符
print(devide) column = ''
for dd in devide:
#如果标题过长,只能存成text格式
if dd == "标题":
column = column + dd + ' TEXT,'
else:
column = column + dd + ' varchar(255),'
col = column.rstrip(',') # 去除最后一个多余的,
# print(column[:-1])
create_table_sql = 'create table if not exists {} ({}) DEFAULT CHARSET=utf8'.format(table_name, col)
print(create_table_sql)
data = 'LOAD DATA LOCAL INFILE \'' + file_path + '\'REPLACE INTO TABLE ' + table_name + ' CHARACTER SET UTF8 FIELDS TERMINATED BY \',\' ENCLOSED BY \'\"\' LINES TERMINATED BY \'\n\' IGNORE 1 LINES;'
cur.execute(create_table_sql)
cur.execute(data.encode('utf8'))
print(cur.rowcount)
con.commit()
except:
print("发生错误")
con.rollback() finally:
cur.close()
con.close()

csv文件快速转存到mysql的更多相关文章

  1. PHP csv文件30w+数据导入mysql数据库

    <?php class Add { public function data() { ini_set('memory_limit', '-1'); //PHP内存设置 $handle=fopen ...

  2. 从csv文件导数据到MySQL

    导入: load data local infile 'D:\\top-1m.csv'    (注意要加上local)10.21.into table `site` fields terminated ...

  3. 读取大csv文件数据插入到MySql或者Oracle数据库通用处理

    import java.io.BufferedInputStream; import java.io.BufferedReader;import java.io.BufferedWriter;impo ...

  4. MySql csv文件导入导出

    一.导出到csv(本地导出) 通过mysql客户端shell连接到服务器,选择使用的数据库,输入sql代码: select * from test_info into outfile '/tmp/te ...

  5. 记录python爬取猫眼票房排行榜(带stonefont字体网页),保存到text文件,csv文件和MongoDB数据库中

    猫眼票房排行榜页面显示如下: 注意右边的票房数据显示,爬下来的数据是这样显示的: 网页源代码中是这样显示的: 这是因为网页中使用了某种字体的缘故,分析源代码可知: 亲测可行: 代码中获取的是国内票房榜 ...

  6. 使用pandas中的raad_html函数爬取TOP500超级计算机表格数据并保存到csv文件和mysql数据库中

    参考链接:https://www.makcyun.top/web_scraping_withpython2.html #!/usr/bin/env python # -*- coding: utf-8 ...

  7. Spring-Batch处理MySQL数据后存到CSV文件

    1 介绍 用Spring Batch实现了个简单的需求,从MySQL中读取用户表数据,根据生日计算年龄,将结果输出到csv文件. 1.1 准备表及数据 user test; DROP TABLE IF ...

  8. Weka里如何将arff文件或csv文件批量导入MySQL数据库(六)

    这里不多说,直接上干货! 前提博客是 Weka中数据挖掘与机器学习系列之数据格式ARFF和CSV文件格式之间的转换(四) 1.将arff文件批量导入MySQL数据库 我在这里,arff文件以Weka安 ...

  9. 【MySQL】CSV 文件导入MySQL

    此问题是前几天整理数据的时候碰到的,数据存在 CSV文件中(200多万记录),通过python 往数据库中导入太慢了,后来使用MySQL 中自带的命令 LOAD DATA INFILE, 30多秒就能 ...

随机推荐

  1. JSONBuilder的用法

    一.JSONBuilder可以向文件中写入写入json字符串.如下面的例子: 1 public class Test 2 { 3 public static void main(String args ...

  2. 深入V8引擎-默认Platform之mac篇(2)

    先说结论,V8引擎在默认Platform中初始化的这个线程是用于处理类似于setTimeout的延时任务. 另外附一些图,包括继承树.关键属性归属.纯逻辑工作流程,对代码木得兴趣的看完图可以X掉了. ...

  3. asp.net oracle 中文乱码 解决方法

    asp.net oracle 中文乱码 解决方法 不需要去修改oracle以及client的字符集,只需要在web.config中连接字符串上加上 Unicode=True 问题解决. <add ...

  4. c#专业的UVC摄像头深控类库-SharpCamera介绍

    SharpCamera是专业的UVC摄像头深控类库.允许您在C#代码内修改摄像头的高级参数,比如亮度.对比度.清晰度.色调.饱和度.伽玛值.白平衡.逆光对比.增益.缩放.焦点.曝光.光圈.全景.倾斜. ...

  5. Python - 解释器 - 第三天

    Python解释器 安装好Python3.x之后,我们可以使用文本文件去编写Python代码,编写完成后将扩展名改成.py结尾的文本文件. 想要执行编写好的.py文件就需要用到Python解释器. 解 ...

  6. python高级编程——网络编程(一)

    计算机网络基础 概念:计算机网络就是把各个计算机连接到一起,让网络中的计算机可以互相通信.网络编程就是如何在程序中实现两台计算机的通信.而网络编程就是开发计算机网络应用程序 计算机的通信协议 概念:计 ...

  7. QML 缓存(QML Caching)

    最近一直在学习QML,在Qt Creator中新建Qt Quick工程后,尝试不断地修改qml文件来进行试验,qml文件需要反反复复的修改. Qt Widget工程,如果修改了cpp代码后,直接构建或 ...

  8. Python——EM(期望极大算法)教学(附详细代码与注解)

    今天,我们详细的讲一下EM算法. 前提准备 Jupyter notebook 或 Pycharm 火狐浏览器或谷歌浏览器 win7或win10电脑一台 网盘提取csv数据 需求分析 实现高斯混合模型的 ...

  9. 字符串的sizeof长度及strlen长度

    在C/C++中,字符串是以零('\0')结尾的.比如,对于下面的字符串: "hello"  在最后一个字符'd'后面,还有一个我们肉眼看不见的'\0'字符,作为该字符串的结束符.所 ...

  10. Cron Expressions——Cron 表达式(QuartZ调度时间配置)

    如果你需要像日历那样按日程来触发任务,而不是像SimpleTrigger 那样每隔特定的间隔时间触发,CronTriggers通常比SimpleTrigger更有用. 使用CronTrigger,你可 ...