通过消除重复项将数据从文本文件加载到mysql数据库

时间:2011-12-14 05:56:50

标签: mysql

我想将数据从文本文件加载到数据库,如果数据已经存在,我需要在加载时转义该数据。

我使用下面的查询将数据从文本文件加载到mysql数据库。

“将数据加载'F:/wbrdata.txt'加载到表wbrdatatable中 字段以','结尾 可选地由“”括起来 以'\ r \ n'结尾的行 忽略1行(通道,时间,脉冲,居住,目标);“

它将数据附加到现有表数据。我想避免表格和表格中已经存在的常见数据(重复)加载到数据库时加载文件。

我怎样才能做到这一点? 谢谢

问候 桑卡尔

2 个答案:

答案 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

此致