加载数据本地infile - 选择忽略最后一列

时间:2012-12-16 14:31:32

标签: mysql select csv load-data-infile

我正在尝试使用加载数据本地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中查看该表时,一切看起来都不错,但我的问题是,当我尝试运行时选择它忽略最后一列(称为'bydlisko')

例如我试试这个:

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

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

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

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

2 个答案:

答案 0 :(得分:0)

请勿在查询中使用“\ n”“部分附带的”,因为 CSV 中的字段不会被“\ n”分隔。尝试删除该部分,然后再次运行查询。

另外,请注意,请确保不截断列数据。最后一列是15个字符长。对于15个字母的单词来说足够了吗? (Varchar需要多一个字节的长度,因此值“Hronsky Benadik”必然会有16个。)

答案 1 :(得分:0)

很旧,但我只是偶然发现了这个,并注意到没有好的答案。 每次我在数据库课程中分配并评分“上传 csv 作业”时,我都会看到这种情况。您的 .csv 文件是什么样的,您没有在此处显示。

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

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

那我觉得有必要问一下,这个查询有用吗:

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

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