【问题标题】:Mysql create table from csvMysql从csv创建表
【发布时间】:2018-09-08 10:00:34
【问题描述】:

为了从 csv 文件创建一个表,我点击了那个链接Import CSV File Into MySQL Table 我创建了表结构,它的值与每行的 csv 文件值不匹配的问题。 可能是什么问题?

表结构为:

创建表products (

id_p int(11) 非空,

nomvarchar(255) 非空,

ref int(11) 非空, price decimal(10,2) NOT NULL,

active int(11) 非空,

shopnamevarchar(255) 非空,

id_shop_default int(11) 非空,

id_image int(11) 非空,

name_categoryvarchar(255) 非空,

price_final int(11) 非空,

is_virtual int(11) 非空,

downla int(11) 非空,

sav_quantity int(11) 非空,

badge_danger int(11) 非空 ) ENGINE=InnoDB 默认字符集=latin1;

csv 结构是:

数据库中的结果是:

以下是通过文本编辑器编辑时 csv 的前 10 行(可能是 ,; 例如在 ligne 1 中的问题?

id_product;name;reference;price;active;shopname;id_shop_default;id_image;name_category;price_final;is_virtual;nb_downloadable;sav_quantity;badge_danger
1;CORRECTEUR DE PROJECTEUR NEUF... CITROEN PEUGEOT ;14.750000;1;Tracauto1950;1;1; Ampoule,Platine et divers,;0;0 ;1;0
2;ECLAIRAGE DE PLAQUE AR SEIMA 856...PEUGEOT 204 ;29.750000;1;Tracauto1950;1;2; Feu,Cabochon int/ext divers,;0;0 ;1;0
3;RACCORD D'EAU METAL 4 SORTIES...POUR PEUGEOT CITROEN RENAULT SIMCA ;7.750000;1;Tracauto1950;1;3; Bocal, Pompe lave glace,;0;0 ;1;0
4;REFRIGERATEUR DE CIRCUIT D'HUILE...CITROEN 2CV AZAM ;69.750000;1;Tracauto1950;1;4; Radiateurs,Bouchons,Joints,;0;0 ;1;0
5;VERRE DE FEU AR CLIGNOTANT...DS HY GS BX 104 204 304 504 R4 R5 R8 R10 R12... ;12.750000;1;Tracauto1950;1;5; Feu,Cabochon int/ext divers,;0;0 ;1;0
6;ETRIER DE FREIN AVANT GAUCHE  BENDIX...RENAULT R18 ;59.750000;1;Tracauto1950;1;6; Disque,Etrier,Tambour;0;0 ;1;0
7;PARE CHOC ARRIERE COTE GAUCHE...PEUGEOT SIMCA CITROEN RENAULT ;39.750000;1;Tracauto1950;1;7; Parechoc, Butoirs, Butées;0;0 ;1;0
8;T DE RACCORD DE LAVE GLACE...POUR PEUGEOT CITROEN RENAULT SIMCA ;6.750000;1;Tracauto1950;1;8; Bocal, Pompe lave glace,;0;0 ;4;0
9;JOINT METALLO ...RENAULT PEUGEOT CITROEN SIMCA PANHARD ;9.750000;1;Tracauto1950;1;9; Joint,Silentbloc,Accessoires;0;0 ;1;0

)

【问题讨论】:

  • 如果您向我们展示了创建表的 SQL,然后是 CSV 文件的一部分和数据库中存储的值,将会有所帮助。告诉我们您认为哪里不匹配。那么也许我们可以找到原因。
  • 我已经通过添加表结构和 csv 文件结构更新了帖子:它分为两部分
  • 你能提供你使用的LOAD DATA INFILE...命令吗?

标签: mysql csv


【解决方案1】:

教程中加载CSV的命令是:

LOAD DATA INFILE 'c:/tmp/discounts.csv' 
INTO TABLE discounts 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

我注意到您的字段没有用任何引号括起来,因此您应该将加载命令更改为:

LOAD DATA INFILE '/dir/dir/your_file.csv' 
INTO TABLE products
FIELDS TERMINATED BY ';' ENCLOSED BY ''  
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

主要的变化是这个位:FIELDS TERMINATED BY ';' ENCLOSED BY '' 并且你不能在任何字段中使用;。当然你应该读过这个:

https://dev.mysql.com/doc/refman/5.7/en/load-data.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 2012-04-17
    • 1970-01-01
    • 2013-08-15
    • 2015-05-10
    相关资源
    最近更新 更多