mysql的导出:
mysql的数据导出到外部是有限制的,查看限制的方式
show variables like '%secure%'
secure_file_priv为null 表示不允许导入导出
secure_file_priv指定文件夹时,表示mysql的导入导出只能发生在指定的文件夹
secure_file_priv没有设置时,则表示没有任何限制
这个参数的值可以再my.ini的配置文件中修改,
修改后需要重启mysql服务
我这里没有修改,所以导入和导出都只能再指定的目录下/var/lib/mysql-files/
导出命令:
select * from table1 into outfile '/var/lib/mysql-files/table1' fields terminated by ',' lines terminated by '\r\n';
原导出表的建表语句 create table table1(name varchar(10),id int);
新建表结构一样的表
create table table2 like table1;
导入命令
load data infile '/var/lib/mysql-files/table1' into table table2 fields terminated by ',' lines terminated by '\r\n';
重点:
以上说的都是在情况是 文件和mysql都在同一台主机节点,也就是都再服务机上
而假如文件再客户机,要把本地的文件导入导出到服务节点的mysql中,就不用理会
上面导入导出的指定目录了
(当然,即使是文件和mysql同在一个节点,用下面的方式也不用理会)
把远端mysql服务器的数据导出到本地的节点 (-N 忽略字段行,test是库名)
mysql -h 'xxx:xx:xx' -uroot -pxxxx test -N -e 'select * from table1' > /tmp/test/table1
可以指点本机mysql的数据导出到本机的任意节点了
mysql -h 'localhost' -uroot -pxxxx test -N -e 'select * from table1' > /tmp/test/table1
把本地文件导入到远端的mysql服务器
在mysql的命令行中键入 加上一个local即可
load data local infile '/tmp/test/table1' into table table2 fields terminated by ',' lines terminated by '\r\n';
也即是说加上local就可以把任意路径的文件导入到mysql了,不受原先路径的限制