load data infile 'CSV文件存放路径'
into table 表名
fields terminated by ',' optionally enclosed by '"' escaped by '"'
lines terminated by '\r\n'
或者下载个sqlyog之类的可以直接导
或者打开csv文件 用excel内置函数拼接 insert into 语句
通过命令行导入(要求列与列之间以 英文逗号 分割,若字段中含有 , 则以 " 包裹)load data infile 'D:/mysql-5.7.29-winx64/files/ratings_5.csv' into table ratings fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\r\n'
踩坑一:文件路径用 \ 分割会报错,用 / 可(用 \\ 应该也可)
踩坑二:load data 命令报错
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
在 my.ini 中加入(空字符串代表允许从一切目录导入)
[mysqld]
secure-file-priv=''
然后再 Windows 的服务中重新启动 mysql
踩坑三:csv 文件中第一行是诸如 userId 这样的列名
如果你的 csv 文件不大,直接使用 notepad++ 打开后删除第一行即可
但在我们这里,千万级别的文件 notepad++ 无法打开,这时可以考虑两种方法
1. 将 csv 文件传入 Linux 服务器删去第一行
由于不知道如何在 Win 10 中做这个 *** 作,只能通过 Linux 中转执行
sed -i '1d' ratings.csv
检验是否成功,可以打印出第一行观察
cat ratings.csv | head -n 1
2. 通过工具把大的 csv 分成多个 notepad 能够打开的较小文件,对第一个文件删除第一行并依次导入
工具:splitcsv
亲测 5000000 条数据的 csv 文件可以在 notepad++ 中打开(只能同时打开 3 个)
这个工具还有个小坑:ratings_0.csv 的最后一行和 ratings_1.csv 的第一行是重复的,请手动删除
mysql导出数据库到csv文件的方法:1、通过mysql客户端shell连接到服务器,选择使用的数据库,输入sql代码:
select * from test_info
into outfile '/tmp/test.csv'
fields terminated by ',' optionally enclosed by '"' escaped by '"'
lines terminated by '\r\n'
里面最关键的部分就是格式参数
这个参数是根据RFC4180文档设置的,该文档全称Common Format and MIME Type for Comma-Separated Values (CSV) Files,其中详细描述了CSV格式,其要点包括:
(1)字段之间以逗号分隔,数据行之间以\r\n分隔;
(2)字符串以半角双引号包围,字符串本身的双引号用两个双引号表示。
通过执行上述代码,便可以将需要的数据以csv格式导出到执行的文件中。
2、另外,MySQL中导入CSV格式数据的sql代码如下:
load data infile '/tmp/test.csv'
into table test_info
fields terminated by ',' optionally enclosed by '"' escaped by '"'
lines terminated by '\r\n'
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)