如何读取文本文件并将其插入到mysql表中,如果不存在

我有一个具有以下值的文本文件:

9001,20180501,08:30,12:30;
9002,20180501,08:30,14:00;
9003,20180501,08:30,12:25;
9004,20180501,08:15,12:30;
9001,20180502,08:11,12:32;
9002,20180502,08:24,12:34;
9003,20180502,07:51,13:52;
9004,20180502,08:30,12:30;
9001,20180503,08:30,12:30;
9002,20180503,08:30,12:30;
9003,20180503,08:30,12:30;
9004,20180503,08:30,12:30;

我有一个名为"Person"的表,其值如下:

ID(INT, PK, A_I)       |   Code    |   Date    |   In    |   Out   |
1                          9001       20180501     08:30     12:30
2                          9002       20180501     08:30     14:00

现在我想逐行读取文本文件,并在"Code"和"Date"列不存在时将其插入表中

我可以使用LUA逐行读取文本文件并将其插入到变量中,然后使用此代码:

INSERT INTO Person(id, Code, Date, In, Out)
VALUES (null, 9001, 20180501, '08:30', '12:30')
WHERE NOT EXIST (SELECT Code,Date FROM Person WHERE Code=9001 AND Date=20180501)

但它不起作用!

是否有任何方法使用MYSQL读取文本文件并插入?

点赞
用户2149718
用户2149718

你的代码违反了主键约束:它正在为id提供一个NULL值。

由于id是自动递增的,你根本不需要指定它:

INSERT INTO Person (Code, Date, In, Out)
VALUES (9001, 20180501, '08:30', '12:30')
WHERE NOT EXISTS (SELECT Code,Date FROM Person WHERE Code=9001 AND Date=20180501)

编辑: 上面似乎在 MySQL 中语法上不正确。你可以尝试使用以下查询语句:

INSERT INTO Person (Code, Date, In, Out)
SELECT Code, Date, In, Out
FROM
(
   SELECT 9001 AS Code, 20180501 AS Date , '08:30' AS In, '12:30' AS Out
) as t
WHERE NOT EXISTS (SELECT Code,Date FROM Person WHERE Code=9001 AND Date=20180501)
2018-06-15 12:40:13
用户2269012
用户2269012

创建唯一索引,以字段为基础,然后运行插入忽略查询,它将不允许重复数据

ALTER TABLE Person ADD UNIQUE unique_index' ( Code, Date, In, Out)

INSERT IGNORE INTO Person (Code, Date, In, Out) VALUES (9001, 20180501, '08:30', '12:30')

2018-06-15 14:09:12