我正在尝试使用LOAD DATA LOCAL INFILE
将数据加载到MYSQL(在MAMP中)。数据库表中指定的某些数据元素与数据文件中的列名称(多个csv文件)不同。例如:数据库有一列'location_affected',数据文件的列名为'location_name',用于同一数据元素。此外,数据文件不具有相同数量的列,也不具有相同的列名。每个数据文件可能包含数据库表中指定的~200个数据元素中的大约30-40列。任何人都可以建议如何映射db表和csv文件之间的列名?我尝试了以下但它引发了一个错误:“location_name不存在”
LOAD DATA LOCAL INFILE 'pathtothefile' INTO TABLE tablename
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r'
IGNORE 1 LINES
(col1,col2,col3..............)
SET location_name = location_affected ;
答案 0 :(得分:2)
您可以通过将列分配给虚拟变量来跳过列:
LOAD DATA LOCAL INFILE 'pathtothefile' INTO TABLE tablename
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r'
IGNORE 1 LINES
(col1,col2,@skipme,@skipme,col3..............);
答案 1 :(得分:1)
映射在LOAD DATA
语句中定义。如果要重新排序列,则应在那里调整它们以匹配CSV文件中的任何内容。
IGNORE 1 LINES
部分是跳过典型CSV标头标签的部分。导入程序不使用它们。
在这种情况下,SET location_name=location_affected
毫无意义。如果要导入location_name
列,请在定义中指定。
答案 2 :(得分:0)
映射在LOAD DATA语句中定义。如果要重新排序列,则应在那里调整它们以匹配CSV文件中的任何内容。
IGNORE 1 LINES部分是跳过典型CSV标题标签的部分。导入程序不使用它们。
在这种情况下,SET location_name = location_affected毫无意义。如果要导入location_name列,请在定义中指定