2

我正在尝试使用加载数据本地 infile将 csv 文件导入 mysql 数据库

我的 csv 文件如下所示:

1;Lubos;Chrapna;92;muz;Topolcany
2;Branislav;Grecni;28;muz;Topolcianky
3;David;Forgac;57;muz;Hronsky Benadik
4;Imrich;Doci;58;muz;Kosice

表我想把这个 cvs 文件看起来像这样:

   CREATE TABLE IF NOT EXISTS DIM_zakaznik (
   id int(5),
   meno varchar(15),
   priezvisko varchar(15),
   vek int(15),
   pohlavie varchar(15),
   bydlisko varchar(15))

我的查询如下所示:

    load data local infile 'dim_zakaznik.csv' into table DIM_zakaznik 
    fields terminated by ';'
    enclosed by '\n'
    lines terminated by '\n';

它工作得很好,当我在 phpMyAdmin 中查看该表时,一切看起来都不错,但我的问题是,当我尝试运行 select 时,它忽略了最后一列(称为“bydlisko”)

例如我试试这个:

 SELECT * FROM `dim_zakaznik` WHERE `bydlisko`='Topolcany'

它所做的只是说:“MySQL返回了一个空结果集(即零行)。(查询耗时0.0184秒)”

它不应该是空结果对吗?它不仅仅适用于最后一列,我不知道为什么。当我之前尝试使用这些列加上我添加了另一列(该列在表中的最后一列)时,它忽略了另一列(即表中的最后一列)

我真的很感激一些帮助。提前致谢!

4

2 回答 2

0

不要在查询中使用“由 '\n' 括起来”部分,因为CSV中的字段不由 '\n' 分隔。尝试删除该部分,然后再次运行您的查询。

另外,就像备注一样,请确保不要截断列数据。最后一列长 15 个字符。15个字母的单词够吗?(Varchar 需要多一个字节作为长度,因此值“Hronsky Benadik”必然有 16 个)。

于 2013-01-23T20:56:41.480 回答
0

所以一个旧的,但我只是偶然发现了这个,并注意到它没有很好的答案。我每次分配并在数据库类中对“上传 csv 作业”进行评分时都会看到这种情况。你的 .csv 文件是什么样的,你没有在这里展示。

如果您显示的此查询不起作用:

SELECT * FROM `dim_zakaznik` WHERE `bydlisko`='Topolcany'

然后我觉得有必要问一下,这个查询是否有效:

SELECT * FROM `dim_zakaznik` WHERE `bydlisko`=' Topolcany'

如果是这样,请记住:“空格是为人类准备的”,并相应地调整您的 .csv 文件。(如果您的表格出现格式问题,也检查 LINES TERMINATED BY '\r\n' 会有所帮助。

于 2021-05-05T17:59:04.157 回答