2011-01-09 178 views
1

我有一個平面文件數據庫(是的,我知道 - 最糟糕的部分是1.4GB),而且我正在將它移動到MySQL數據庫。問題是,我不知道如何去做這件事 - 我已經檢查了這裏的所有相關問題,但沒有涉及我想要做什麼,也沒有涉及我的數據庫目前如何設置。將平面文件數據庫傳輸到MySQL數據庫

我目前的平面文件數據庫設置爲正常的MySQL行是它自己的文件,並且MySQL表將是目錄。例如,如果您有一個名爲Jon的用戶,那麼在名爲/ members /的目錄中將爲用戶提供一個文件。在這個文件中,會爲用戶提供各種信息,包括用戶標識,排名等等 - 所有這些信息都由標籤分隔,全部在單獨的行(userid \ t4)中。

所以這裏是一個例子用戶文件:

userid  4 
notes  staff notes: bla bla staff2 notes: bla bla bla 
username Example 

所以,我怎麼能轉換到上述情況在MySQL自己的行和領域?如果可能的話,我可以同時做幾千個這樣的文件嗎?

謝謝。

+0

這似乎是一個簡單的腳本挑戰爲Perl,PHP,蟒蛇等... – gahooa 2011-01-09 23:44:54

+0

是的,這就是我最初要做的事情,但是我只是想知道是否有任何方法可以在MySQL中快速完成。 – Jon 2011-01-09 23:47:29

回答

1

這看起來像一個相當瑣碎的腳本問題。

請參閱下面的示例(僞代碼),瞭解如何在user目錄中讀入user表。

很明顯,你會希望它是更穩健一點,錯誤檢查/數據驗證,但只是角度來看,見下圖:

for file in list_dir('/path/to/users/'): 
    line_data = dict() 
    for line in open(file, 'r'): 
    key, value = line.split("\t", 1) 
    line_data[key] = value 

    mysql_query(''' 
    INSERT INTO 
     users 
    SET 
     user_id = $1, 
     foo = $2, 
     bar = $3 
    ''', 
    (
     line_data['user_id'], 
     line_data['foo'], 
     line_data['bar'] 
    ) 
) 
0

LOAD DATA INFILE用於CSV文件,你都沒有,所以:在一個CSV文件的目錄

  • 合併的所有文件,刪除列(用戶ID,用戶名的名字.. 。)並用分隔符([TAB],「;」,...)分隔cols,而不是導入爲CVS。
  • 爲你所得到的每一個骰子循環。

或寫一個「愚蠢」的程序(PHP效果很好),爲你做這一切工作。

相關問題