转自:https://blog.csdn.net/joseph25/article/details/80264403
使用linux上的MySql发现可能是版本的原因,死活找不到加载csv文件的选项,找了个舍近求远的方法,用win10的MySQL加载csv文件,然后迁移到linux系统。
linux下登录mysql:
格式: mysql -h主机地址 -u用户名-p用户密码
1、例1:连接到本机上的MYSQL
一般可以直接键入命令
mysql -uroot -p
mysql -uroot -p
方法一:
https://www.cnblogs.com/xiyushimei/p/7839228.html
1,进入本地MySQL的服务端
cd C:\Program Files\mysql-8.0.13-winx64\bin
2,导出数据库文件
C:\Program Files\mysql-8.0.13-winx64\bin>mysqldump -u root -h localhost -p -r c:\data1.txt -B lookuptable
c:\data1.txt 是导出的数据放到c盘的data1.txt文件中,-B后面的lookuptable是要导出的表名
c:/data.txt这个目录和导出的文本名可以自己随便取,-B 后面的是表名,我要导出的表明叫lookuptable。输入密码之后,就可以去保存的目录下看看有没有数据文件了,有的话就成功了,感觉可能失败的地方就是没有cd到mysql的bin目录下或者是路径写错了还有最可能出错的是没有以管理员权限运行,会出现Errcode: 13 - Permission denied。
3,去c盘查看数据,然后上传到linux /opt/date/
4,打开linux,进入MySQL
mysql -uroot -p
5,创建与windows上同名的数据库名,并设置字符集
mysql>create database unicode
mysql>alter database unicode character set utf8 //具体字符集设置,方法二里有
6.出现报错
ERROR 1273 (HY000): Unknown collation: 'utf8mb4_0900_ai_ci'
将data1.txt 中的utf8mb4_0900_ai_ci 更改为 utf8_general_ci
将
6,载入:
source /home/zhouyan/data1.txt
7,查看
mysql>show tables;
方法二:(这个方法没有测试,尝试使用bench直接导入sql文件,失败)
1,利用windows的客户端导出个.sql的文件
2,上传到Linux系统上 /opt/date
3,进入linux,mysql
mysql -u root -p
4,创建与windows上同名的数据库名,并设置字符集
mysql>create database unicode character set utf8;
mysql>show variables like "%char%";
如果还有很多文件的格式不是utf8,进行下部修改
MySQL在启动时自动使用/usr/share/mysql目录下的my-medium.cnf文件
解决方法:只需要复制一个/usr/share/mysql目录下的.cnf文件到/etc目录,并改名为my.cnf即可
[client]
default-character-set=utf8
# The MySQL server
[mysqld]
character_set_server = utf8
[mysql]
no-auto-rehash
default-character-set=utf8
然后Linux系统下重启MySQL:service mysql restart
5,mysql>use unicode
mysql>source /opt/date/xx.sql
6,查看
mysql>show tables;
然后发现linux系统下用mysql 的loaddata语句也是可以加载csv文件的,就不需要借助windows系统,也可以直接对csv文件进行整理(整了一天出来了!!)
load data local infile '/home/zhouyan/buildtable.csv' into table lookuptable.lookuptable fields terminated by ',' optionally enclosed by '"' escaped by '"'lines terminated by '\r\n';
ERROR 29 (HY000): File '/home/zhouyan/buildtable.csv' not found (Errcode: 13)
参考网上加local关键字的方法,依然不好使:ERROR 1148 (42000): The used command is not allowed with this MySQL version
参考:https://blog.csdn.net/xiaolang85/article/details/52094164?utm_source=blogxgwz2
a.配置命令load data local infile
- [mysqld] #服务端配置
- local-infle = 1
- [mysql] #客户端配置
- local-infile = 1
b.load data语句,各种跳过
mysql> load data local infile '/home/zhouyan/buildtable.csv' into table lookuptable.lookuptable fields terminated by ',' optionally enclosed by '"' escaped by '"'lines terminated by '\r\n';
Query OK, 0 rows affected (0.37 sec)
Records: 184371 Deleted: 0 Skipped: 184371 Warnings: 0
c.清空要加载的表
delete from lookuptable.lookuptable;
truncate table lookuptable.lookuptable;
d.emm加载成功了
Query OK, 184371 rows affected (9.31 sec)
Records: 184371 Deleted: 0 Skipped: 0 Warnings: 0