SQL CSV文件 - 在特定列号后跳过所有列

时间:2017-01-19 20:41:34

标签: php mysql csv

我好几天都遇到了问题,并且遇到了困难。首先,正如标题所示,我一直在努力将CSV文件导入SQL数据库。

更具体地说,这是通过服务器上的PHP脚本和通过MySQL进入数据库来完成的。

我目前有大约30个CSV文件(这个数字预计会增加),每天更新,然后每天触发一次cron脚本来更新新数据。它通过LOAD DATA INFILE加载文件。所有这一切都很完美。

问题是: 每个CSV文件包含不同的列数。列数范围在50-56列之间。我存储在此集合数据库中的数据只需要前8列。我已经知道如何使用@dummy跳过单个列,这要归功于以下Q& A:How to skip columns in CSV file when importing into MySQL table using LOAD DATA INFILE?

然而,由于列计数不同,虚拟计数并不总是相同,我想知道是否有办法从第1-8列获取数据,然后无论列数如何都忽略所有数据?

2 个答案:

答案 0 :(得分:0)

一个相当粗略的补丁是先在php中读取起始行,用逗号计算列数。然后知道数量,减去8并生成sql命令,现在知道需要忽略多少列。

答案 1 :(得分:0)

只需要包含八列填充,我们就可以看到CSV行中的前八列:

LOAD DATA INFILE 'file.txt' INTO TABLE t1 (c1, c2, c3, c4, c5, c6, c7, c8)