1. 程式人生 > >MySQL 命令列匯出、匯入Select 查詢結果

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語句的設計更靈活一些。

來源:https://blog.csdn.net/huaishuming/article/details/74762652