LOAD DATA INFILE选择列

时间:2010-11-16 15:49:33

标签: mysql file-io load

我有一个文本文件,其所有列都以\ t(tab)分隔。总共有34列,但我只需要读取并插入前两列,即ID和名称。表结构如下:

CREATE TABLE temp.itemname ( id SMALLINT(5) NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY (id) ) ENGINE = InnoDB;

我可以使用哪种查询来选择并仅插入前两列并在此之后切换到下一行?

temp

  

抛出错误1366:不正确的整数值:第1行的列'id'为'17'

我无法理解。直到我想到这一点,我什么也做不了...... 此外,该文件长18094行,所以手动插入至少可以说是令人筋疲力尽,我也有其他类似的文件。

2 个答案:

答案 0 :(得分:1)

在加载命令中,尝试列出要导入的字段,并忽略该行的其余部分:

LOAD DATA INFILE'itemname.txt'INTO TABLE itemname FIELDS TERMINATED BY'\ t'LINES终止于'\ n'(id,name);

在这种情况下,终结符(\ t和\ n)并不是绝对必要的,因为它们是默认值。如果输入使用不同的终结符,则还需要在命令中指定这些终结符。

答案 1 :(得分:-2)

您可以指定要插入数据的表的列。

以下是命令的语法:

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [CHARACTER SET charset_name]
    [{FIELDS | COLUMNS}
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [IGNORE number LINES]
    [(col_name_or_user_var,...)]
    [SET col_name = expr,...]

有关详细信息,请查看docs