MySql:将CSV数据上传到临时表中,然后加入

时间:2018-08-01 07:38:43

标签: mysql sql csv join inner-join

我在使用Mysql查询时遇到一个非常奇怪的问题。我不确定我是否做对了。我曾尝试在网上搜寻合法的解决方案,但找不到任何东西。

我有1张桌子,说些什么:

桌舞

ID | Col1 | Col2
-------------------------
1  | abc  | ABC1234567675
2  | def  | ABC3435345345
  • ID的类型为Int
  • Col1是Varchar(50)
  • Col2是类型为varchar(200)的Alpha数字字符串

我有一个只有1列的CSV文件,其值与上面Foo表的Col2相同。

我正在将CSV加载到Temporary表中,假设使用以下查询查询Bar:

drop temporary table Bar;

CREATE TEMPORARY TABLE Bar (
  Col2 varchar(200)
);


LOAD DATA LOCAL INFILE 'C:/update.csv'
INTO table Bar;

当我在“温度表”栏上选择“ *”时。它列出了已从CSV上传到临时表的所有值。

但是当我尝试在Col2上加入它时。它仅返回1个结果。

当我使用来自表栏的Col2值使用where子句手动查询表Foo时。它显示表Foo中存在许多记录。

我已经尝试过以下查询:

select * from Foo inner join Bar on Foo.Col2=Bar.Col2;

select * from Foo join (select Col2 from Bar) b on Foo.Col2=b.Col2;

select * from Foo where Col2 in (select Col2 from Bar);

但是所有三个仅返回1个结果。 过去有没有其他人也遇到过类似的问题? 你能指导我做错什么吗?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

最后,经过大量的搜索之后,我发现我的“ LOAD DATA”命令未完成。我在Bar表数据中有回车符和换行符。因此,我必须在“加载数据”命令中添加以下行:

FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';

然后工作正常。