当csv表标题与mySQL表标题不匹配时使用LOAD DATA INFILE语句?

时间:2014-07-04 14:03:11

标签: php mysql sql csv load-data-infile

我要做的是使用 php 将一些 .CSV 文件导入 mySQL

我将使用 LOAD DATA INFILE 语句,但我遇到了问题:

.CSV文件中的标题与mySQL表中的列不匹配,.CSV文件中有更多内容。我知道我可以使用类似的变量忽略某些列:

$insert_query = "LOAD DATA LOCAL INFILE $csvfile
            INTO table $tableName
            FIELDS TERMINATED BY ','
            LINES TERMINATED BY ''
            (col1,col2,col3,@ignore,col4)";

我想知道的是,我是否可以将.CSV文件中的数据列分配给mySQL表中的不同列,EG将.CSV中的第一列数据映射到mySQL表的第五列,有点像:

$insert_query = "LOAD DATA LOCAL INFILE $csvfile
            INTO table $tableName
            FIELDS TERMINATED BY ','
            LINES TERMINATED BY ''
            (col5,col2,col3,@ignore,col4)";

这可能吗?如果是这样,我们将非常感谢一些例子! :)

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用适合您问题的语法执行此操作并指定列列表:

LOAD DATA INFILE 'path/to/your/file' INTO TABLE yourTable (col1,col2,...);

manual进一步指出:

  

如果中的字段顺序,您还必须指定列列表   输入文件与表中列的顺序不同。   否则,MySQL无法告诉如何将输入字段与表匹配   列。