将CSV文件导入到具有不同列数的表中,而不使用桥/临时表

时间:2014-03-02 09:36:31

标签: mysql csv phpmyadmin

假设我有一个包含3列的CSV文件和一个包含5列的目标表(3列与CSV列相同,还有2列)。所有行都包含相同列数的数据。

CSV:

id | name      | rating 
---|-----------|-------
1  | radiohead | 10
2  | bjork     | 9
3  | aqua      | 2

SQL表:

id | name      | rating | biggest_fan | next_concert

现在,为了导入CSV文件,我创建了一个包含3列的临时表,然后将导入的数据复制到真实表中。但这看起来很愚蠢,我似乎无法找到更有效的解决方案。

是否有办法将文件直接导入目标表,同时在表格中但不在文件中的列中生成NULL /默认值?

我正在寻找SQL / phpMyAdmin解决方案

1 个答案:

答案 0 :(得分:2)

不,我不认为有更好的方法。一个不同的方式是使用文本操作程序(sed,awk,perl,python,...)在每行的末尾添加两个逗号;即使您的列顺序不匹配,phpMyAdmin也有一个用于在导入CSV时更改顺序的字段。但是,它似乎仍然需要适当数量的列。然而,无论是或多或少的工作都比你现在做的更重要。