2011-12-07 11 views
2

私はMySQLでファイルを読み込みます。各ファイルには以下が含まれます。MySQLに読み込まれたソースファイルを追跡するには?

Date ShopNumber subject price quantity total 

FILE1:

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

FILE2:

MySQLのテーブルで
01/01/2011 Mexico Book4 $10 2 $20 
01/01/2011 Mexico Book1 $10 1 $10 
............................... 

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テーブルから削除します。

関連する問題