2011-12-07 31 views
2

我在MySQL中加載文件。每個文件包含:如何跟蹤MySQL中加載的源文件?

Date ShopNumber subject price quantity total 

例如,文件1:

01/01/2011 Mexico Book1 $10 2 $20 
01/01/2011 Mexico Book2 $10 2 $20 
01/01/2011 Mexico Book3 $10 2 $20 
............................... 

文件2:

01/01/2011 Mexico Book4 $10 2 $20 
01/01/2011 Mexico Book1 $10 1 $10 
............................... 

在MySQL表:

01/01/2011 Mexico Book1 $10 3 $30 
01/01/2011 Mexico Book2 $10 2 $20 
01/01/2011 Mexico Book3 $10 2 $20 
01/01/2011 Mexico Book4 $10 2 $20 
............................... 

的問題是:我必須跟蹤源文件,我不包括源文件的唯一密鑰表 - 我只需要保持總計。 重複是很少見的。可能會添加另一個表,將只保留重複?謝謝。

+0

不清楚是什麼問題?如何合併重複導入?或者如何記錄合併值實際上與導入時特定行合併的信息? – newtover

+0

不,我需要知道Book1(.. n)是從哪個文件中提供的。 – user710818

+0

以及你如何加載它們?使用LOAD DATA INFILE? – newtover

回答

1

我的應用程序包括導入功能,這裏是我解決加載數據到MySQL和跟蹤信息的問題。

  • 當用戶上載文件的應用程序重新格式化它的製表符分隔UFT8編碼有效的臨時文件
  • 文件和有關導入一些其他元信息的名稱的應用程序插入到一個單獨的表import_info並檢索其ID(UPDATE_ID)
  • 那麼應用程序使用,以它傳遞給該文件的路徑LOAD DATA INFILE查詢和update_idattr1attr2attr3來自文件加載從文件中的數據,update_id自帶從p arameter到查詢)

    LOAD DATA LOCAL INFILE %(file_path)s 
    INTO TABLE importdata 
    CHARACTER SET 'utf8' 
    (attr1, att2, att3, update_id) 
    SET update_id = %(update_id)s; 
    
  • 在我的情況下importdata表允許導入數據之後,應用程序合併在其它表中重複。如果合併成功,我從importdata表中刪除導入的數據。