我为表创建了4列
cur.execute("""CREATE TABLE videoinfo (
id INT UNSIGNED PRIMARY KEY AUTO INCREMENT,
date DATETIME NOT NULL,
src_ip CHAR(32),
hash CHAR(150));
""")
我有一个.txt文件,里面有三列数据。我想使用LOAD DATA LOCAL INFILE
命令来插入数据,但问题是,我创建的表现在有四列,第一列是id,所以,mysql可以自动从第二列插入数据或者额外的命令是需要的?
非常感谢!
答案 0 :(得分:1)
AUTO INCREMENT
是无效的语法。如果您查看MySQL CREATE TABLE
语句的文档,您会看到正确的关键字是AUTO_INCREMENT
。
此外,date
是一个关键字,因此您需要使用反引号引用它,如MySQL identifier文档页面所述。该文档还列出了所有keywords,必须引用它们作为标识符。为安全起见,您可以简单地引用所有标识符。
要仅将数据插入某些列,您可以显式指定列。对于LOAD DATA INFILE
:
LOAD DATA INFILE 'file_name'
INTO TABLE videoinfo
(`date`, src_ip, hash)
对于INSERT
声明:
INSERT INTO videoinfo (`date`, src_ip, hash)
VALUES (...);
这也在MySQL手册中有所体现。注意一个模式?