我有一个csv文件,我希望将其导入到我的数据库中。但是,csv文件中的列与我要将其导入的表中的列不匹配。我想做两件事:
答案 0 :(得分:0)
LOAD DATA INFILE
就是您所需要的。
请仔细阅读:http://dev.mysql.com/doc/refman/5.7/en/load-data.html。
最有趣的部分是:
默认情况下,LOAD末尾没有提供列表 DATA INFILE语句,输入行应包含一个字段 每个表格列。如果您只想加载某些表的列, 指定列列表:
LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata
(col1,col2,...);
如果中的字段顺序,您还必须指定列列表 输入文件与表中列的顺序不同。 否则,MySQL无法告诉如何将输入字段与表匹配 列。
列列表可以包含列名称或用户变量。 使用用户变量,SET子句使您可以执行 在将结果分配给它们之前转换它们的值 列。
SET子句中的用户变量可以通过多种方式使用。该 以下示例直接使用第一个输入列作为值 t1.column1,并将第二个输入列分配给用户变量 在用于之前进行分割操作 t1.column2的值:
LOAD DATA INFILE 'file.txt' INTO TABLE t1 (column1, @var1) SET
column2 = @var1/100;
SET子句可用于提供非来自输入的值 文件。以下语句将column3设置为当前日期和 时间:
LOAD DATA INFILE 'file.txt' INTO TABLE t1 (column1, column2) SET
column3 = CURRENT_TIMESTAMP;
您还可以通过将输入值分配给用户变量来丢弃输入值 而不是将变量分配给表列:
LOAD DATA INFILE 'file.txt' INTO TABLE t1 (column1, @dummy,
column2, @dummy, column3);