MySQL 命令行導出、導入Select 查詢結果

<!-- 環境: Windows 2003 SP2 + MySQL5.5.28  Author: 博客園小dee -->

 

有的時候需要把在一張表中用 select 語句查詢出來的結果保存到另一張結構相同的表中,可以有幾種方法來實現:

方法一:

在命令行下使用一對SQL語句完成該操作:

導出查詢結果:Select語句 into outfile '保存路徑+文件名';

導入查詢結果:load data local infile '保存路徑+文件名' into table 表明 character set utf8;

 

例如:

查詢出數據庫jc1992中表jc_archives中發佈時間晚於2014年9月1日的數據並保存在本地磁盤D的mysqltmp目錄下,保存爲1.sql,在命令行中輸入:

SELECT * from jc_archives where senddate>UNIX_TIMESTAMP('2014-9-1' ) into outfile 'D://mysqltmp/1.sql';

命令行如圖:

 

1.sql用EditPlus打開如圖:

 

再把保存查詢結果的1.sql導入到另一數據庫data_tmp的表archives中,在命令行中輸入:

load data local infile "D://mysqltmp/1.sql" into table archives character set utf8;

命令行如圖:

 

這樣就把第一張表中的查詢結果導入了第二張表。

 

要注意的是在導入時,兩張表的主鍵或者唯一索引的值不能有重複,否則會跳過不執行或者報警告:

 

方法二:

導出查詢結果:使用MySQL自帶的轉存數據庫工具musqldump

命令行進入musqldump,使用語句

mysqldump -u用戶名 -p -c --default-character-set=字符集 數據庫名 數據表 --where="查詢條件" > 保存路徑和文件名

導入查詢結果:mysql -u用戶名 -p -c --default-character-set=字符集 數據庫名 < 保存路徑和文件名

 

例如:

查詢出數據庫jc1992中jc_arctiny的發佈時間晚於2014年9月1日的數據並保存在本地磁盤D的mysqltmp目錄下,保存爲2.sql,在命令行中輸入:

mysqldump -uroot -p -c --default-character-set=utf8 jc1992 jc_arctiny --where="senddate>UNIX_TIMESTAMP('2014-9-1')" > D:\mysqltmp\2.sql

命令行如圖:

 

2.sql中保存的是完整的SQL語句,用記事本打開如圖:

 

再把保存查詢結果的2.sql導入到另一數據庫data_tmp的表中,在命令行中輸入:

mysql -uroot -p -c --default-character-set=utf8 data_tmp < D:\mysqltmp\2.sql

命令行如圖:

此時數據庫data_tmp中多了一張表jc_arctiny,表裏的數據正是查詢出來的的那部分數據。

 

注意:此方法導出時用的是mysqldump工具,而導入時用的是mysql命令。而且此方法由於導出的是完整的SQL語句,包括創建和設計數據庫,所以只適用於恢復數據,而不適用於將一張表中的數據導入到另一張表裏,不過,也可以使用保存文件中的INSERT語句把查詢出的數據插入到另一張表中,過程要周折一些。方法一對於SQL語句的設計更靈活一些。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章