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了,不受原先路徑的限制