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

holgip5t  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(415)

我在mysql查询中遇到了一个非常奇怪的问题。我不确定我做得对不对。我试过在网上搜索一个合法的解决方案,但什么也找不到。
我有一张table,说如下:
表foo

ID | Col1 | Col2
-------------------------
1  | abc  | ABC1234567675
2  | def  | ABC3435345345

id的类型为int
col1是varchar(50)
col2是varchar(200)类型的字母数字字符串
我有一个只有1列的csv文件,它的值与上面foo表的col2相同。
我正在将csv加载到临时表中,例如使用以下查询的bar:

drop temporary table Bar;

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

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

当我在临时表格栏上选择*时。它列出了从csv上传到temp表的所有值。
但当我尝试加入col2的时候。它只返回一个结果。
然而,当我用where子句从表栏中使用col2值手动查询表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);

但这三个函数都只返回一个结果。过去有没有其他人也遇到过类似的问题?你能告诉我我做错了什么吗?
任何帮助都将不胜感激。

20jt8wwn

20jt8wwn1#

最后,在google了很多次之后,我发现我的“loaddata”命令并不完整。在条表数据中有回车符和换行符。因此,我必须在“加载数据”命令中输入以下行:

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

然后它工作得很好。

相关问题