我想将数据从文本文件加载到数据库,如果数据已经存在,我需要在加载时转义该数据。
我使用下面的查询将数据从文本文件加载到mysql数据库。
“将数据加载'F:/wbrdata.txt'加载到表wbrdatatable中 字段以','结尾 可选地由“”括起来 以'\ r \ n'结尾的行 忽略1行(通道,时间,脉冲,居住,目标);“
它将数据附加到现有表数据。我想避免表格和表格中已经存在的常见数据(重复)加载到数据库时加载文件。
我怎样才能做到这一点? 谢谢
问候 桑卡尔
答案 0 :(得分:1)
尝试将文本文件加载到临时表中(与目标表相同),然后从临时表中删除重复项并将其余文件复制到目标表。
示例(假设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
+----+---------+
答案 1 :(得分:0)
试试这个逻辑。
1. Upload Text File Data
2. Check record using select statement on your database
if(recordexist==true)
save
else
not save
此致