将shell将mysql数据生成txt_Linux服务器中将csv、txt文件导入、导出mysql数据库

本文介绍了如何通过shell脚本将MySQL数据库中的数据导出为txt文件,以及如何将csv或txt文件导入到MySQL数据库。讨论了数据导入时可能遇到的错误,如1261和1064,并提供了相应的解决方案。
摘要由CSDN通过智能技术生成

导入csv文件

LOAD DATA INFILE '/var/lib/mysql-files/jjdb_fkdb_all_dropdup_20w.csv'

into table `jjdb_fkdb_all_dropdup_20w` character set utf8

fields terminated by ',' optionally enclosed by '"' escaped by '"'

lines terminated by '\r\n';

注:导入csv文件,对文件的结构和内容要求苛刻,失败概率很大。

导入txt文件

1,将csv文件保存为txt文件输出

df.to_csv('jjdb_fkdb_all_dropdup.txt',sep='\t',index=False)

2,进入数据库

mysql -uroot -p

use mysql57

3,数据导入mysql

LOAD DATA INFILE '/var/lib/mysql-files/jjdb_fkdb_all_dropdup_20w.txt'

若txt中字段的顺序与table中字段的顺序不一致,则会报错,所以以下命令中,按照table中的顺序输入字段名称:

INTO TABLE jjdb_fkdb_all_dropdup_20w IGNORE 1 LINES (xzqhdm,jjdbh,jjdwdm,jjybh,jjyxm,jjtbh,jjtip,jjsj,bjdh,jjlyh,bjrxm,bjrxbdm,lxdh,lxdz,jqdz,gxdwdm,jqlxdm,zddwxzb,zddwyzb,jqztdm,gxsjc,gljqbh,tfhm,rksjc,bjnr,bjlxmc,labels,sjdbh,jjdbh_f,cjdbh,fkdbh,fksj,fkdwip,fktbh,fkybh,fkdwdm,fkyxm,jwqdm,jwqmc,cjrxm,sjcjsj,ddxcsj,jqlbdm,jqxldm,jqfssj,jqjssj,jqdjdm,hzdjdm,afcslxdm,qhjzlbdm,cjqk,sfphxsaj,sfcczaaj,sfjjjf,cdclqk,cdryqk,hzyydm,cljgdm,cljg,rksjc_f,gxsjc_f,jqztdm_f,id);

导入成功

Query OK, 6331041 rows affected, 65535 warnings (2 min 30.16 sec)

Records: 6331041 Deleted: 0 Skipped: 0 Warnings: 48877809

注意:

1,导入过程中出现1261报错:

ERROR 1261 (01000): Row 404 doesn't contain data for all columns

则设置sql_mode,操作如下:

show variables like "sql_mode";

set sql_mode='';

2,导入过程中出现1064报错:

ERROR 1062 (23000): Duplicate entry '20' for key 'PRIMARY'

则在Navicat中,将table中的主键去掉即可,但如此导入结束后会发现数据量增加。

导出csv文件

从表jjdb_fkdb_all_dropdup_copy中导出csv文件(导出的csv文件用pandas读取可能会出错)

select * into outfile '/var/lib/mysql-files/all_vs_dup.csv' fields terminated by '\t' lines terminated by '\n' from jjdb_fkdb_all_dropdup_copy;

利用pandas从数据库中读取数据

import pandas as pd

import pymysql

# sql 命令

sql_cmd = "SELECT * FROM table_name"

# 用DBAPI构建数据库链接engine

con = pymysql.connect(host='172.**.**.**', user='****', password='**这里填写数据库密码**', database='**填写数据库名称**', charset='utf8', use_unicode=True)

df = pd.read_sql(sql_cmd, con)

如果你的问题解决了,欢迎收藏+点赞+关注哦~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值