月份输入的MySQL ENUM问题

时间:2014-09-11 10:25:18

标签: mysql enums

我想创建一个表来限制Month的输入而无法加载csv文件。

我使用的.mysql脚本正在关注

CREATE DATABASE IF NOT EXISTS Hactl;
CREATE TABLE  Hactl.table1(
    Type ENUM('M','C') NOT NULL,
    Region VARCHAR(50) NOT NULL,
    Country VARCHAR(50) NOT NULL,
    City VARCHAR(3) NOT NULL,
    Imp DECIMAL(10,2) NOT NULL,
    Exp DECIMAL(10,2) NOT NULL,
    TS DECIMAL(10,2) NOT NULL,
    Year INT(4) NOT NULL,
    Month ENUM('Jan', 'Feb', 'Mar',
           'Apr', 'May', 'Jun',
           'Jul', 'Aug', 'Sep',
           'Oct', 'Nov', 'Dec') NOT NULL
    /*UNIQUE(Type, Region, Country, City, Year, Month)*/
)
COLLATE = 'latin1_general_cs'
ENGINE=InnoDB;

然后我想通过

将csv文件加载到表中
USE Hactl;
LOAD DATA INFILE 'C:/Users/LI Ho Yin/Google Drive/GA Project/Cargo/Cargo.Statistics/data/Hactl/201207Hac.csv'
INTO TABLE table1
FIELdS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

虽然加载月份属性存在问题,但对于整列来说它是空的,而如果我在Month char(3) NOT NULL中使用CREATER TABLE,则成功加载月份属性。

enter image description here

我拥有的.csv文件是

enter image description here

1 个答案:

答案 0 :(得分:2)

认为ENUM是文本是错误的。看起来你正在尝试将文本输入到ENUM列中,mysql会期望有一个数字。

我建议您先导入带有文本列的临时表,然后将其复制到工作表中,并使用CASE将文本月更改为ENUM。