mysql - SQL LOAD DATA INFILE 问题

标签 mysql sql auto-increment load-data-infile

如何使用 LOAD DATA INFILE 命令来跳过某些字段。

假设我有下表:

CREATE TABLE stuff (
    id INT UNSIGNED AUTO_INCREMENT NOT NULL,
    name CHAR(64) NOT NULL,
    junk CHAR(64) NOT NULL,
    a ENUM('N','Y') NOT NULL DEFAULT 'N',
    PRIMARY KEY (id)
);

还有我的文件:

,name1,junk1,
,name2,junk2,
,name3,junk3,Y

声明是否:

LOAD DATA INFILE 'myfile' INTO TABLE stuff FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

自动跳过自动增量并正确处理?它似乎可以正确处理所有事情,但这会产生以下警告:

Warning (Code 1366): Incorrect integer value: '' for column 'id' at row 1
Warning (Code 1265): Data truncated for column 'a' at row 1
Warning (Code 1366): Incorrect integer value: '' for column 'id' at row 2
Warning (Code 1366): Incorrect integer value: '' for column 'id' at row 3
Warning (Code 1265): Data truncated for column 'a' at row 3
Warning (Code 1366): Incorrect integer value: '' for column 'id' at row 4

删除开头的逗号无法正确输入数据。

最佳答案

您可以显式将 id 设置为 NULL,以便它使用自动增量值。

LOAD DATA INFILE 'myfile' 
INTO TABLE stuff 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n'
SET id = NULL;

我还建议删除第一个逗号并明确列出文件中的列:

LOAD DATA INFILE 'myfile' 
INTO TABLE stuff 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n'
(name,junk,a)
SET id = NULL;

关于mysql - SQL LOAD DATA INFILE 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5248680/

相关文章:

mysql - 根据另外 2 列值的一部分更新列值

mysql - 根据整个数据总计选择前 10 个(按日期分组)

Mysql自增客户

python - 当一个人创建一个新模型时,应该在哪里放置代码来自动增加 Google App Engine/Django 上的分片计数器?

php - MySQL 自动增量与几个不同的用户输入单词

c# - 同一个配置文件上的两个不同的提供者

php - 如何在 Jquery 表格中显示图像?

mysql - 多段线无法绑定(bind)

MySQL 创建表时出错 - 截断不正确的双值?

Mysql 找到购买了 X 但没有购买 Y 的客户