標籤:開發 where local mysql google
今天接到開發妹子的需求,匯入指定月份的資料到測試服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 來源表;
現在才終於搞定收工
本文出自 “在路上” 部落格,請務必保留此出處http://xiaochengxiang.blog.51cto.com/2558908/1541628