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