我有一个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列直接Map到MySQL表的前8列。然后,我需要跳过CSV文件中接下来的两列,然后将CSV文件的第11列Map到MySQL表的第9列。
现在我使用以下SQL命令:
LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE my_table
FIELDS TERMINATED BY ','
ENCLOSED BY ''
LINES TERMINATED BY '\n'
但是上面的代码将CSV文件的前9列Map到MySQL表中的9列。
4条答案
按热度按时间axr492tv1#
Mysql docs:
也可以通过将输入值赋给用户变量而不将该变量赋给表列来丢弃该输入值:
nsc4cvqm2#
step1.deal with awk.
step2.load到mysql中。
下面的方法很简单,但在较低版本的mysql中不允许。
8ehkhllq3#
@deemi:
忽略
@dummy
的唯一方法是将字段的Default设置为AUTO INCREMENT
。所以你可以跳过这个字段,直接这样写代码//假设字段名
column1
默认设置为AUTO INCREMENT
。vsnjm48y4#
我认为代码中还有一个变化:
以下SQL命令:
因此,最好使用
LINES TERMINATED BY '\r\n'
而不是LINES TERMINATED BY '\n'
所以代码将是: