将单列CSV加载到MySQL中

时间:2013-07-22 15:29:20

标签: mysql load-data-infile

我有一个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的正确表示法是什么?我是否遗漏了查询的任何其他关键部分?

3 个答案:

答案 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文件中删除。