Java プロセスから MySQL の LOAD DATA INFILE を呼び出して、テキスト ファイルから MySQL テーブルにデータをロードしようとしています。このファイルには、現在の日付と前日のデータが含まれている場合があります。テーブルには、以前の日付のデータを含めることもできます。問題は、ファイル内の以前の日付の列の一部が変更されている可能性があることです。しかし、これらの列をすべて更新したくはありませんが、一部の列の最新の値のみが必要です。
例、表
+----+-------------+------+------+------+ | | ID | 報告日 | val1 | val2 | val3 | +----+-------------+------+------+------+ | | 1 | 2012-12-01 | 10 | 1 | 1 | | | 2 | 2012-12-02 | 20 | 2 | 2 | | | 3 | 2012-12-03 | 30 | 3 | 3 | +----+-------------+------+------+------+
入力ファイルのデータ:
1|2012-12-01|10|1|1 2|2012-12-02|40|4|4 3|2012-12-03|40|4|4 4|2012-12-04|40|4|4 5|2012-12-05|50|5|5
ロード後のテーブルは次のようになります
mysql> select * from load_infile_tests; +----+-------------+------+------+------+ | | ID | 報告日 | val1 | val2 | val3 | +----+-------------+------+------+------+ | | 1 | 2012-12-01 | 10 | 1 | 1 | | | 2 | 2012-12-02 | 40 | 4 | 2 | | | 3 | 2012-12-03 | 40 | 4 | 3 | | | 4 | 2012-12-04 | 40 | 4 | 4 | | | 5 | 2012-12-05 | 50 | 5 | 5 | +----+-------------+------+------+------+ 5 行セット (0.00 秒)
列 val3 の値は更新されないことに注意してください。また、大きなファイルに対してもこれを行う必要があります。一部のファイルは 300 メガバイト以上になる可能性があるため、スケーラブルなソリューションである必要があります。
ありがとう、アニルダ