csv文件快速转存到mysql
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的更多相关文章
- PHP csv文件30w+数据导入mysql数据库
<?php class Add { public function data() { ini_set('memory_limit', '-1'); //PHP内存设置 $handle=fopen ...
- 从csv文件导数据到MySQL
导入: load data local infile 'D:\\top-1m.csv' (注意要加上local)10.21.into table `site` fields terminated ...
- 读取大csv文件数据插入到MySql或者Oracle数据库通用处理
import java.io.BufferedInputStream; import java.io.BufferedReader;import java.io.BufferedWriter;impo ...
- MySql csv文件导入导出
一.导出到csv(本地导出) 通过mysql客户端shell连接到服务器,选择使用的数据库,输入sql代码: select * from test_info into outfile '/tmp/te ...
- 记录python爬取猫眼票房排行榜(带stonefont字体网页),保存到text文件,csv文件和MongoDB数据库中
猫眼票房排行榜页面显示如下: 注意右边的票房数据显示,爬下来的数据是这样显示的: 网页源代码中是这样显示的: 这是因为网页中使用了某种字体的缘故,分析源代码可知: 亲测可行: 代码中获取的是国内票房榜 ...
- 使用pandas中的raad_html函数爬取TOP500超级计算机表格数据并保存到csv文件和mysql数据库中
参考链接:https://www.makcyun.top/web_scraping_withpython2.html #!/usr/bin/env python # -*- coding: utf-8 ...
- Spring-Batch处理MySQL数据后存到CSV文件
1 介绍 用Spring Batch实现了个简单的需求,从MySQL中读取用户表数据,根据生日计算年龄,将结果输出到csv文件. 1.1 准备表及数据 user test; DROP TABLE IF ...
- Weka里如何将arff文件或csv文件批量导入MySQL数据库(六)
这里不多说,直接上干货! 前提博客是 Weka中数据挖掘与机器学习系列之数据格式ARFF和CSV文件格式之间的转换(四) 1.将arff文件批量导入MySQL数据库 我在这里,arff文件以Weka安 ...
- 【MySQL】CSV 文件导入MySQL
此问题是前几天整理数据的时候碰到的,数据存在 CSV文件中(200多万记录),通过python 往数据库中导入太慢了,后来使用MySQL 中自带的命令 LOAD DATA INFILE, 30多秒就能 ...
随机推荐
- [转] linux 查找文本过滤grep正则表达式命令详解用法
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用 ...
- C# ??(两个问号)的表达式使用详解
今天有人问我C#中两个问号是什么意思,怎么使用,于是乎有了这篇随笔 有时候我们需要判断某个对象是否为null,一般的做法是 if(x=null){....} 若想让自己的代码更简洁,可以这样写: st ...
- MailKit/MimeKit 发送邮件
MimeKit / MailKit 支持最新的国际化的电子邮件标准,是.NET 中为一个支持完整支持这些标准电子邮件库,最近正式发布了1.0版本.如果你想做所有与的电子邮件相关的事情,看看 MimeK ...
- java内存溢出实战
通过设置-XX:+HeapDumpOnOutOfMemoryError 自动生成dump文件,进行分析内存溢出原因 1.堆溢出堆溢出原因莫过于对象太多导致. 错误:java.lang.OutOfMem ...
- C#中 char、byte、string
var str = "我是中国人";var str1 = "abc"; char[] chars = str.ToCharArray();char[] char ...
- JS中var声明与function声明以及构造函数声明方式的区别
JS中常见的三种函数声明(statement)方式有这三种: // 函数表达式(function expression) var h = function () { // h } // 函数声明(fu ...
- 【转载】Gradle学习 第三章:教程
转载地址:http://ask.android-studio.org/?/article/15 3.1. Getting Started 入门The following tutorials intro ...
- 网商微信实名认证FAQ
一.商户实名认证简介 基于监管政策.系统风控.用户体验等方面的考虑,我们需要加强对从业机构特约商户的风险管理,升级对商户客户身份识别的认证标准.因此,新入驻的从业机构特约商户要陆续按照新标准完成商户实 ...
- nginx之旅(第三篇):代理、正向代理、反向代理、代理的原理、nginx反向代理场景、nginx反向代理配置、nginx反向代理语法
一.代理服务与反向代理 什么是代理服务 代理-代理办理(代理理财.代理收货.代理购物等等). 一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术.关于正向代理的概念如下: 正向代理(forw ...
- windows10 docker安装使用
一.安装部署 1.下载安装 https://hub.docker.com/editions/community/docker-ce-desktop-windows 需要注册完后,才可以下载.点击安装 ...