2

非常に大きな.txt(csv)(100k以上のエントリ)がサーバーに毎晩ftpで送信され、次のクエリを使用しています。

LOAD DATA LOCAL INFILE '/x/x/public_html/2013/fluid1/x3export/x3export.txt' REPLACE INTO TABLE x3export FIELDS TERMINATED BY '|'

「x3export」のデータをreplaceを使用して更新したい。ただし、データ内に一意のフィールドはありません。2つのフィールドを組み合わせて一意のIDを作成する必要があります。(CatalogueRef + HierarchyCode)ただし、これを行う方法がわかりません。読み取ったデータからのLOAD DATAは、事前定義された一意のキーまたはインデックス付きの列を使用するだけであり、コンテンツを置き換えるものを指定することはできません(?) 。

もう少し詳しく説明するには:

たとえば、 CatalogueRefは001ABCのようになります。たとえば、HierarchyCodeは次のようになります。AAA

(これらが何を意味するのか私に聞かないでください、私はそれらがそれらを必要とする別のシステムから来ていることを本当に知りません。)同じCatalogueRefを持つ複数の行があるかもしれませんが、それらを一緒に追加して001ABCAAAは私が何から一意のIDを作成しますmは言った。うまくいけば、それが役立つでしょうか?

ありがとう

4

1 に答える 1

0

ここでMySQLのドキュメントを参照してください:http://dev.mysql.com/doc/refman/5.5/en/load-data.html

テキストの終わり近くに、挿入する値を操作できるようにするSETキーワードが説明されています。たとえば、これを便利なものにすることができる場合があります。

LOAD DATA LOCAL INFILE 'x3export.txt'
REPLACE INTO TABLE x3export
FIELDS TERMINATED BY '|'
    (Column1, Column2, Column3, @CatalogueRef, @HierarchyCode)
SET ID = concat(@CatalogueRef, @HierarchyCode);
于 2013-01-11T11:30:57.293 に答える