我有一个csv文件,格式如下:
Rank, URL
1, www.google.com
2, www.facebook.com
etc...
我有一个结构表
url, source, date_added
每个csv文件具有不同的源ID。
我使用以下查询加载我的数据
load data local infile 'this.csv'
into table seeds.seed
fields terminated by ',';
这不是我想要的,但这是我的出发点。 我想要做的是选择要插入的列2作为我的URL字段,并为每个条目将源设置为0。所以我在想这样的事情......
load data local infile 'this.csv'
into table seeds.seed(url, source)
select col1, '0'
fields terminated by ',';
col1的正确表示法是什么?我是否遗漏了查询的任何其他关键部分?
答案 0 :(得分:2)
LOAD DATA INFILE 'this.csv'
INTO TABLE seed
(col1) SET source = 0;
FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '"'
LINES TERMINATED BY '\r\n';
查看SO回答。
This是参考
答案 1 :(得分:1)
结束工作的查询
load data local infile 'this.csv' into table seeds.seed
fields terminated by ',' lines terminated by '\n'
(@col1,@col2) set url=@col2, source='0';
答案 2 :(得分:1)
使用负载数据infile非常棘手。上周我花了很多时间试图解决这么多错误。我会告诉你我的见解。
我看不到你的create table语句所以我不知道你正在使用什么数据类型。 如果你有整数字段,那么你必须在csv文件的每个字段中至少放0,即使它是错误的。你在导入后删除它。
如果你的整数字段是像主键那样的auto_increment,那么你可以省略所有字段。不要犯我的错误,只留下没有价值的领域。完全删除它,否则你的csv将以字段终结符字符开头,并且不会导致问题的结束。
加载数据infile'file.csv'
进入表mytablename
以','
结尾的字段以“\ r \ n”结尾的行 - (对于Windows)
忽略1行(field1,field2,field4等) - 在csv中列出你的字段。如果您的字段没有数据,那么您可以从csv中删除它们,并在此处从列表中省略它们。
忽略1行 - 忽略包含字段列表的csv的第一行。
设置id = null,
字段3 = NULL;
我将auto_increment id字段设置为null,因为它不在csv文件中,并且mysql知道它存在以及如何处理它。
还将field3设置为null,因为它没有值,并且作为示例从csv文件中删除。