その後、一時テーブルから重複を削除し、ターゲット表に残りの部分をコピーし、(ターゲット表と同じ)一時テーブルにテキストファイルをロードするようにしてください。
例(テキストファイルからのすべてのデータを一時テーブルがwbrdatatable_tempであると仮定):私は、クエリの上に実行するプログラムを書いた
CREATE TABLE wbrdatatable(
id INT(11) NOT NULL AUTO_INCREMENT,
column1 VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (id)
);
INSERT INTO wbrdatatable VALUES
(1, '111'),
(2, '222'),
(3, '333'),
(4, '444'),
(5, '555');
CREATE TABLE wbrdatatable_temp(
id INT(11) NOT NULL AUTO_INCREMENT,
column1 VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (id)
);
INSERT INTO wbrdatatable_temp VALUES
(1, '111'),
(2, '222'),
(10, '100'), -- new record that should be added
(11, '200'); -- new record that should be added
-- Copy only new records!
INSERT INTO wbrdatatable
SELECT t1.* FROM wbrdatatable_temp t1
LEFT JOIN wbrdatatable t2
ON t1.id = t2.id AND t1.column1 = t2.column1
WHERE t2.id IS NULL;
-- Test result
SELECT * FROM wbrdatatable;
+----+---------+
| id | column1 |
+----+---------+
| 1 | 111 |
| 2 | 222 |
| 3 | 333 |
| 4 | 444 |
| 5 | 555 |
| 10 | 100 | -- only new record is added
| 11 | 200 | -- only new record is added
+----+---------+
何プログラムは、Javaで – BizApps
をMySQLへのテキストファイルをロードするために使用します。 – sankar
私はシンプルなJDBCプログラムを使ってこのクエリをロードしていますString str = "データinfile 'F://Hello.txt'をテーブルnewwbrtableにロードします。 '、'によって終端されます。 \ n '1行(time、channel1、channel2)を無視する; "; Class.forName(ドライバクラス).newInstance(); con = DriverManager.getConnection(jdbcURL、user、password); st = con.createStatement(); – sankar