我要做的是使用 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)";
这可能吗?如果是这样,我们将非常感谢一些例子! :)
谢谢!
答案 0 :(得分:2)
您可以使用适合您问题的语法执行此操作并指定列列表:
LOAD DATA INFILE 'path/to/your/file' INTO TABLE yourTable (col1,col2,...);
manual进一步指出:
如果中的字段顺序,您还必须指定列列表 输入文件与表中列的顺序不同。 否则,MySQL无法告诉如何将输入字段与表匹配 列。