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 的第一行是重复的,请手动删除
1.导出本地数据库数据到本地文件MySQL
-A
service_db
-h
your_host
-utest
-ptest
mysql>
select
*
from
t_apps
where
created>'2012-07-02
00:00:00'
into
outfile
/tmp/apps.csv
2.导出远程数据库数据到本地文件
mysql
-A
service_db
-h
your_host
-utest
-ptest
-ss
-e
"SELECT
*
from
t_apps
limit
300"
|
sed
's/\t/","/gs/^/"/s/$/"/s/\n//g'
>
apps.csv
(sed部分可略,尤其是处理包含汉字的数据时.
如果内容包含中文,可在select语句前加入set
names
utf8)
3.使用mysqldump导出远程或本地数据到本地文件
mysqldump
-h
your_host
-utest
-ptest
-w
"id<300"
service_db
t_apps
>
tt.sql
如果只导数据加上
-t
or
--no-create-
info
如果只导结构加上
-d
or
--no-data
4.
mysqldump不能指定导出的列,变通方法如下:
mysql
-u
USERNAME
--password=PASSWORD
--database=DATABASE
--execute='SELECT
`FIELD`,
`FIELD`
FROM
`TABLE`
LIMIT
0,
10000
'
-X
>
file.csv
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)