首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在使用LOAD DATA INFILE导入MySQL表时跳过CSV文件中的列?

如何在使用LOAD DATA INFILE导入MySQL表时跳过CSV文件中的列?
EN

Stack Overflow用户
提问于 2010-01-26 19:36:46
回答 2查看 78.5K关注 0票数 62

我有一个包含11列的CSV文件和一个包含9列的MySQL表。

CSV文件如下所示:

col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11

MySQL表如下所示:

col1, col2, col3, col4, col5, col6, col7, col8, col9

我需要将CSV文件的第1-8列直接映射到MySQL表的前8列。然后,我需要跳过CSV文件中的下两列,然后将CSV文件的第11列映射到MySQL表的第9列。

目前,我正在使用以下SQL命令:

LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE my_table
FIELDS TERMINATED BY ','
ENCLOSED BY ''
LINES TERMINATED BY '\n'

但是上面的代码将CSV文件的前9列映射到MySQL表中的9列。

EN

回答 2

Stack Overflow用户

发布于 2014-11-13 14:04:52

@deemi

忽略@dummy的唯一方法是将字段的默认值设置为AUTO INCREMENT。所以你可以跳过这个字段,像这样编写代码,

LOAD DATA INFILE 'file.txt'  
INTO TABLE t1 (column2, column3, column4, column5);

//假定fieldname column1默认设置为AUTO INCREMENT

票数 -1
EN

Stack Overflow用户

发布于 2014-11-13 14:10:18

我认为代码中还有一个变化:

以下SQL命令:

LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE my_table
FIELDS TERMINATED BY ','
ENCLOSED BY ''
LINES TERMINATED BY '\n'

-will可能会导致数据截断错误。

因此,最好使用LINES TERMINATED BY '\r\n'而不是LINES TERMINATED BY '\n'

因此代码将是:

LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE my_table
FIELDS TERMINATED BY ','
ENCLOSED BY ''
LINES TERMINATED BY '\r\n'
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2139069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档