有一个txt文件内容如下:
|  584658 | 0        |           'BLOCKID' | 10124    |         1 | 1309922849 |希望导入一个表中,其中'BLOCKID'对应的字段是enum类型,使用load data导入
load data local infile 'C:\\user_tags.txt' into table `user_tags` fields  escaped by '' enclosed by '' terminated by '|' lines terminated by '\r\n'  (`id`, `user_id`, `guest_id`, `guest_tag`, `tag_text`, `tag_count`,  `stamp`)表如下:
CREATE TABLE `user_tags` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `user_id` int(10) unsigned default NULL,
  `guest_id` varchar(50) NOT NULL,
  `guest_tag` enum('BLOCKID','USETYPE) NOT NULL,
  `tag_text` varchar(50) NOT NULL,
  `tag_count` int(10) unsigned NOT NULL,
  `stamp` int(10) unsigned NOT NULL
)结果其他字段正常导入,guest_tag则不能导入,请大家想想办法。谢谢。还是过以下形式的数据,也都不行:
|  584658 | 0        |           BLOCKID | 10124    |         1 | 1309922849 |
|  584658 | 0        |           1 | 10124    |         1 | 1309922849 |将guest_tag字段改为varchar类型则可以正常导入。

解决方案 »

  1.   

    CREATE TABLE `user_tags` (
       `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
       `user_id` INT(10) UNSIGNED DEFAULT NULL,
       `guest_id` VARCHAR(50) NOT NULL,
       `guest_tag` ENUM('BLOCKID','USETYPE') NOT NULL,
       `tag_text` VARCHAR(50) NOT NULL,
       `tag_count` INT(10) UNSIGNED NOT NULL,
       `stamp` INT(10) UNSIGNED NOT NULL,KEY(id)
    )LOAD DATA INFILE 'r:\\temp\\aa.txt' INTO TABLE `user_tags` 
    FIELDS
    TERMINATED BY '|' (`user_id`, `guest_id`, `guest_tag`, `tag_text`, `tag_count`, `stamp`);
    aa.txt:
    584658|0|1|10124|1|1309922849ENUM以索引号导入
      

  2.   

    在MYSQL 5.1.32下测试通过
    仔细看看别人的回复,
    aa.txt:
    584658|0|1|10124|1|1309922849
    另,最好测试 一下你自己建表SQL
      

  3.   

    遗憾的告诉你,我使用你的这个数据又试了一遍,确实没通过。说说
    584658|0|1|10124|1|1309922849

    | 584658 | 0 | 1 | 10124 | 1 | 1309922849 |我前后多了|线,导致多出2例,但按规则,第一列对应到id自增段,被忽略了,最后一列多出,也被自动忽略了。事实也证明了这点,有无前后分割符,都成功的导入了数据。只有中间enum字段不正确。所以,只想着是不是因为前后多了分割符的话,方向都不对。
      

  4.   

    mysql> LOAD DATA INFILE 'r:\\temp\\aa.txt' INTO TABLE `user_tags`
        -> FIELDS
        -> TERMINATED BY '|' (`user_id`, `guest_id`, `guest_tag`, `tag_text`, `tag_c
    ount`, `stamp`);
    Query OK, 1 row affected (0.03 sec)
    Records: 1  Deleted: 0  Skipped: 0  Warnings: 0mysql> SELECT * FROM user_tags;
    +----+---------+----------+-----------+----------+-----------+------------+
    | id | user_id | guest_id | guest_tag | tag_text | tag_count | stamp      |
    +----+---------+----------+-----------+----------+-----------+------------+
    | 20 |  584658 | 0        | BLOCKID   | 10124    |         1 | 1309922849 |
    +----+---------+----------+-----------+----------+-----------+------------+
    1 row in set (0.00 sec)mysql>
      

  5.   

    多谢楼上指点,具体是enum列无法自动除去前后空格,使用了set字句解决问题。