mysql A庫a表 B庫b表 將a表導入b表中

今天接到開發妹子的需求,導入指定月份的數據到測試服mysql指定的表中(表名稱不一樣)


首先看了下線上的表的整體大小

mysql> SELECT sum(DATA_LENGTH)+sum(INDEX_LENGTH)  FROM information_schema.TABLES where TABLE_SCHEMA='庫名' AND TABLE_NAME='表名';

+------------------------------------+

| sum(DATA_LENGTH)+sum(INDEX_LENGTH) |

+------------------------------------+

|                         4196941824 |

+------------------------------------+

1 row in set (0.00 sec)


這這數據有點大啊4G多,幸好只是只是導入指定月份的數據


開幹


依稀記得mysqldump 有個功能可以指定範圍導出 Google之後果斷導出


/usr/local/mysql/bin/mysqldump -h192.168.1.1 -uzxc -pzxc123  庫名 表名 --where="uptime >= 1404144000 and uptime <= 1406822399" > /tmp/表名.sql


導出還是比較快的,數據只有200多M


之後再想如何導入呢,表名稱不一樣,最後在各種輔助下,決定用合併表的方法弄

a、先導入到數據庫的對應庫裏面

b、然後在採用合併表的方法合併數據

insert into  目標表 select * from  來源表;

ok之後發現數據在增加,在導入數據ing 輕鬆愉快的解決了這個問題


mysql> SELECT sum(DATA_LENGTH)+sum(INDEX_LENGTH)  FROM information_schema.TABLES where TABLE_SCHEMA='庫名' AND TABLE_NAME='表名';

+------------------------------------+

| sum(DATA_LENGTH)+sum(INDEX_LENGTH) |

+------------------------------------+

|                          177422336 |

+------------------------------------+

1 row in set (0.00 sec)


數據在增長中。。。

導入成功之後,

滿心歡喜的查看了數據,


select * FROM 表名稱 LIMIT 1,10;


發現列名既然順序不一樣對應的數據不一樣,醉了,妹子說好了數據結構一樣的呢


只能重來,清空之前導入的數據之後,在根據來源表的列名順序,指定導入進來的列名順序

insert into 目標表(列1,列2,列3。。。) select * from 來源表;


現在才終於搞定收工


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