Load data infile default value not inserting in table

后端 未结 2 437
無奈伤痛
無奈伤痛 2021-01-21 21:09

I\'m importing a csv file using LOAD DATAINFILE

The csv columns are NAME,TYPE,STATUS

my table structure is

Name  : varchar
TYPE  : Varchar
Status: Ti         


        
相关标签:
2条回答
  • 2021-01-21 21:53

    When loading a file, MySQL expects that it has the same number of columns as the destination table, unless you specify otherwise, even if the missing column has a default value. So supply a column list to your LOAD statement, and a literal 1 for the value of STATUS:

    LOAD DATA INFILE '/var/www/names.csv' 
    INTO TABLE users 
      FIELDS TERMINATED BY ',' 
      ENCLOSED BY '"' 
      LINES TERMINATED BY '\n' 
      IGNORE 1 LINES 
      (`name`, `type`, 1)
    

    You can also do it with a SET clause:

    LOAD DATA INFILE '/var/www/names.csv' 
    INTO TABLE users 
      FIELDS TERMINATED BY ',' 
      ENCLOSED BY '"' 
      LINES TERMINATED BY '\n' 
      IGNORE 1 LINES 
      (`name`, `type`)
      SET `status` = 1
    
    0 讨论(0)
  • 2021-01-21 22:05

    After you execute the query , check for any warnings using

    show warnings
    

    Default value is 0 for numeric data types and '' for strings.

    So you should have set default value 1 while creating the table

    create table tableName
    (
    name nvarchar(100) not null,
    type nvarchar(100) not null,
    status smallint default 1
    );
    
    0 讨论(0)
提交回复
热议问题