我想通過從Java進程調用MySQL的LOAD DATA INFILE將文本文件中的數據加載到MySQL表中。該文件可以包含當前日期和前幾天的一些數據。該表還可以包含以前日期的數據。問題是前一個日期文件中的某些列可能已經更改。但我不想更新所有這些列,但只想要一些列的最新值。使用LOAD DATA INFILE時,如何選擇性地更新表中的列?
實施例, 表
+----+-------------+------+------+------+ | id | report_date | 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 | report_date | 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 rows in set (0.00 sec)
注意,列VAL3值不更新。此外,我還需要爲大文件執行此操作,因此某些文件可能大於300Megs或更多,因此它需要成爲可擴展的解決方案。
感謝, Anirudha
所以你不想更新名爲val3的列?只是想確定。 – Smit
是啊,我不想更新一些列,如本例中的val3。 – anirudha13
如果您不想更新該列,那麼它將設置爲空。你想要那個嗎? – Smit