mysql LOAD DATA INFILE选择列

0md85ypi  于 2023-04-05  发布在  Mysql
关注(0)|答案(2)|浏览(242)

我有一个文本文件,它的所有列都用\t(tab)分隔。总共有34列,但我只需要读取并插入前两列,即ID和名称。表结构如下:
CREATE TABLEtemp.itemname(idSMALLINT(5) NOT NULL,nameVARCHAR(255) NOT NULL, PRIMARY KEY (id) ) ENGINE = InnoDB;
我可以使用什么查询来选择和插入前两列,然后剪切到下一行?
load data infile 'itemname.txt' into table itemname
抛出错误1366:整数值不正确:第1行的列“id”为“17”
而且,这个文件有18094行,所以手动插入至少会让人筋疲力尽,而且我还有其他类似的文件。

vnjpjtjt

vnjpjtjt1#

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

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

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

x759pob2

x759pob22#

可以指定要在其中插入数据的表的列。
下面是命令的语法:

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

相关问题