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