獲取單個表的數據,刪除單個表或將整個轉儲文件分解爲各個包含單獨表的文件的最簡單方法是什麼?我通常最終做了大量的vi regex搜索,但我敢打賭有更簡單的方法來用awk/perl等來做這些事情。谷歌搜索結果的第一頁帶回了一堆非工作的perl腳本。操縱巨大的MySQL轉儲文件
5
A
回答
9
如果可以的話,可以省下很多麻煩並使用mysqldump -T
。
--tab =路徑,-T路徑
農產品製表符分隔的數據文件。對於每個轉儲表,mysqldump 創建一個tbl_name.sql文件,其中包含創建表的CREATE TABLE語句 和包含其 數據的tbl_name.txt文件。選項值是寫入文件的目錄。
默認情況下,.txt數據文件使用列值和每行末尾的換行符之間的製表符 進行格式化。可以使用--fields-xxx和 - lines-terminated-by選項明確指定 格式。
注意
只有在mysqldump在與mysqld服務器相同的機器上運行時才應使用此選項。您必須擁有FILE權限 ,並且服務器必須有權寫入您指定的目錄 中的文件。
11
當我需要從SQL轉儲中取出單個表時,我使用了grep,head和tail的組合。
如:
grep -n "CREATE TABLE" dump.sql
這就給你每一個行號,所以如果你的表是行200和一個後上線269,我這樣做:
head -n 268 dump.sql > tophalf.sql
tail -n 69 tophalf.sql > yourtable.sql
我想你可以延伸這些原則來打破一個腳本,將整個事件分解成每個表格一個文件。
任何人都想要去這裏做嗎?
,可以幫助啓動一個bash循環去另一個位:
grep -n "CREATE TABLE " dump.sql | tr ':`(' ' ' | awk '{print $1, $4}'
這讓你的行號,並如表名的一個很好的列表:
200 FooTable
269 BarTable
2
4
This shell script將抓取你想要的表並將它們傳遞給splitted.sql
。
它能夠理解正則表達式,因爲我添加了sed -r
選項。
另外MyDumpSplitter可以將轉儲分割成單獨的錶轉儲。
0
我有點晚,但如果它可以幫助任何人,我不得不分裂一個巨大的SQL轉儲文件,以便將數據導入到另一個Mysql服務器。 我最終做的是使用系統命令拆分轉儲文件。
分裂-l 1000 import.sql splited_file
上面將分裂SQL文件每1000行。
希望這可以幫助別人
相關問題
- 1. 負載巨大的SQL轉儲到MySQL
- 2. 恢復巨大的MySQL轉儲文件到MS SQL Server 2008
- 3. Python:操縱大文本文件
- 4. 巨大的圖像我想操縱我的Xcode應用程序
- 5. 轉換一個巨大的txt文件
- 6. MYSQl從大文件轉儲單個表
- 7. 操縱CSV文件
- 8. 操縱TSV文件
- 9. 操縱.sql文件
- 10. 如何編輯巨大的SQL轉儲?
- 11. 操縱python中的文件
- 12. 巨大的main.cs文件
- 13. 巨大的文件上傳
- 14. mysql轉儲文件大小和數據庫大小的差異
- 15. 轉換大量的MySQL轉儲文件,CSV
- 16. mysql導入大文件與巨大的blob表字段
- 17. Haskell操縱文件內容
- 18. 操縱輸入文件流
- 19. C++:操縱文件資源?
- 20. JQ操縱JSON文件
- 21. 操縱寫文件類
- 22. 操縱json文件python
- 23. Powershell操縱主機文件
- 24. 操縱CSS文件編程
- 25. 用C#操縱SVG文件
- 26. 轉換巨大的JSON文件,CSV文件
- 27. 用於節點JS的JPEG圖像操縱器(來自JPEG文件轉儲)
- 28. 存儲巨大的矩陣
- 29. 轉儲大塊的MySQL表
- 30. 存儲值和操縱它
頭的輸出可以簡單地通過管道輸送到尾巴 - 這是不是一個壞主意 – deadprogrammer 2008-11-12 23:01:41
非常有趣的解決方案,但maatkit可以做同樣的甚至更多:d – 2010-05-22 23:17:49