2011-04-19 123 views
2

從我週末的EC2實例開始講起。將我在那裏按摩的數據轉儲到一個685MB的轉儲文件中以轉移到我的服務器。清晨,所以沒有檢測到我有選項設置爲擴展插入。我無法訪問臨時數據庫中的按摩數據,因爲我認爲我使用了轉儲文件。將大量擴展插入轉換爲mysql的簡單插入

所以,現在我有這個轉儲文件,其中包括一個表有1700萬行的一個擴展插入。我的服務器上的MySQL窒息了它。

我找到了一個名爲mysqdump-convert.pl的perl腳本,它將擴展插入轉換爲簡單插入。我將它的輸出輸出到一個新文件中,但是在685MB任務的144MB後它似乎已經窒息了。

是否有任何其他工具可以處理此任務?謝謝。

+0

你在命令行中輸入轉儲?使用擴展插入導入1700萬行應該沒問題。 – 2011-04-19 20:57:08

+0

@maclema昨天下午我試圖從命令行導入。它導入了兩個大表格(數百萬行數據),但在大約兩百萬行17M行表中只有三個數字字段後停止。在我應該找的MySQL有沒有超時? – Ian 2011-04-19 21:03:28

+0

@maclema找到了csplit工具。將看看是否通過每個表的開始分割文件將使它更易於管理。 – Ian 2011-04-19 21:35:11

回答

1

做一個防彈腳本來做到這一點將是一個痛苦。但是,只爲您的數據做它可能很容易。

如果你開始用這樣的:

INSERT INTO tblTable VALUES (1,4,"String"),(2,4,"String"),(3,4,"String"); 

你可以做一個搜索和替換,用你喜歡的編輯器:

Find: ,(
Replace with: ;\nINSERT INTO tblTable VALUES (

現在,翻閱並確保它看起來是正確的,讓它撕裂。