超大csv文件导入导出mysql

把10个G左右的csv文件导入mysql(只有一个csv文件,在本地)
工具:Navicat Premium 12&mysql workbench 8.0 CE
数据库:MySQL 8.0

navicat导入向导

导入方法不赘述
https://jingyan.baidu.com/article/59a015e375b25af795886558.html
之前数据库装在c盘的时候,大概一天多导入了九千多万条数据。
后来数据量太大,怕c盘不够用,一时冲动把mySQL从c盘卸了装到另外的盘了,不知道是真的变慢了还是我对速度的要求提高了,就觉得有些无法忍受这个速度,开始想别的办法。
总之就是虽然慢,但是是可以处理得了的。

mysql workbench 8.0 CE导入

导入的极慢,一晚上就导了几十万条

load data in file

上网搜到的招数

参考:
将CSV文件导入MySQL表

mysql快速导入多个大csv文件

CSV文件与MySQL表的导入、导出

注意要在导入前准备好数据库表,表的每列和csv文件的每列是对应的

use 数据库名;

可以在前边选择数据库,也可以在写表名的时候把数据库名写在前边

LOAD DATA LOCAL INFILE '文件路径'
    INTO TABLE 表名
    FIELDS TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES;

报错,权限不够:Loading local data is disabled; this must be enabled on both the client and server sides
把mysql的bin加入到环境变量,进入cmd,

mysql --local-infile=1 -u 你的用户名 -p密码
set global local_infile = 1;

参考:https://zhuanlan.zhihu.com/p/133633701
https://blog.csdn.net/wang1311611/article/details/109051198

LOAD DATA LOCAL INFILE '文件路径'
    INTO TABLE 表名
    FIELDS TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES;

可以导入了!
导入16.5G的大文件,一亿八千多万行数据,用了2小时20分多一点
在这里插入图片描述

导出csv

之前16.5G的csv文件导入后不小心被我重写了,数据都丢了,只好从数据库再导出一份
还是从cmd进入数据库

mysql --local-infile=1 -u 你的用户名 -p密码
SELECT * FROM  数据库表名
	INTO OUTFILE '文件路径'
	FIELDS ENCLOSED BY '"'
	TERMINATED  BY ';'
	ESCAPED BY '"'
	LINES TERMINATED  BY '\n';

报错:
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
应该就是因为mySQL对文件路径的目录没权限

执行命令:

 SHOW VARIABLES LIKE "secure_file_priv";

可以看到mySQL有权限的目录,导入那个目录下即可
(也可以修改my.ini配置给它权限)

注意:我改了之后还是报错,是因为我文件路径用了单斜杠,改成双斜杠就好了。
很快就完成了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值