0

我在表中有28億條記錄。該表使用INFOBRIGHT引擎在mysql安裝上運行。我在表格中有一些不正確的條目,並希望糾正它們。在大型數據庫中進行數據交換

測試有350個奇數列。我想要交換數據從列P1P3幾個記錄(不是全部)。我曾計劃進行遷移數據的方法是使用MySQL的

  • INTO OUTFILE 功能從表中刪除不需要的記錄從表測試

    1. 提取數據如下到CSV文件。
    2. 導入使用LOAD DATA INFILE並使用SET 子句從P1將數據移動到P3(空字符串爲P1和SET P1 = P3 CSV數據

    該方法似乎有意義,直到我意識到INFOBRIGHT不支持SET如前所述here

    摘錄以下鏈接

    的SET結構是通過在 標準的MySQL下載,但不是由Infobright的裝載機發現MySQL的支持裝載機條款列入 ICE。我能夠使用SET語句實際執行加載; 有趣的是,它會運行,但SET被 Infobright忽略。

    問題

    1. 有沒有一種更簡單的方法來做到這一點?
    2. 當然,我可以編輯CSV文件。但是,對於28億條記錄,我想要有一個可靠的方法來做到這一點。任何測試腳本 讚賞。
    3. 我不想使用mysql加載程序並將數據加載到MYISAM表中,因爲涉及的數據量很大。有更快的方法嗎?
  • +0

    爲什麼不製作臨時表,並使用該臨時表和llive表運行UPDATE查詢來交換數據?或嘗試使用交換? –

    +0

    告訴我們yor infobright版本是否支持更新/插入/刪除? –

    +0

    因此排除更新會慢得多。想法是有最小的中斷 –

    回答

    1

    Infobright在從文件導入時不允許SET,但可以選擇用於加載文件的mysql加載程序。默認情況下,infobright使用它自己的加載器,但你可以選擇mysql加載器來加載文件,然後你可以使用SET。

    您可以使用以下命令設置mysql加載器:set @bh_dataformat ='mysql';

    我不知道多少mysql裝載程​​序會比IB裝載程序慢。我已經在1.5小時內加載了約60GB的〜60列的文件。

    +0

    Infobrighrt loader的速度是mysql的兩倍。每個文檔的IEE默認使用mysql加載器。但經過測試,它似乎默認爲Infobright加載器。我曾用過類似的方法。還有另一種使用Infobright IEE加載數據的方法。有一種稱爲DLP處理器的特殊數據處理器,可對數據進行預處理。所以加載數據太快了。 –