把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表
注意要在导入前准备好数据库表,表的每列和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配置给它权限)
注意:我改了之后还是报错,是因为我文件路径用了单斜杠,改成双斜杠就好了。
很快就完成了