MySQL 命令行导出、导入Select 查询结果
?
有的時候需要把在一張表中用 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
總結
以上是生活随笔為你收集整理的MySQL 命令行导出、导入Select 查询结果的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL导出数据遇到secure-fi
- 下一篇: linux cmake编译源码,linu