使用包含半冒号的数据加载数据错误

时间:2011-11-03 08:44:55

标签: php mysql

我使用以下sql使用mysql的“加载数据”导入数据。 description字段包含半冒号,因此半冒号后面的内容不插入

LOAD DATA LOCAL INFILE  '/tmp/phpz4m7Rl' INTO TABLE  `mytable` FIELDS TERMINATED BY  ';' ENCLOSED BY  '"' ESCAPED BY  '\\' LINES TERMINATED BY  '\n'

实际数据如下:

1;2;3;D;Testdata: Testing; 100% Perfect

但它只插入

1;2;3;D;Testdata: Testing;

我的表结构

CREATE TABLE `mytable` (
  `id` text NOT NULL,
  `category` varchar(12) NOT NULL,
  `product` varchar(12) NOT NULL,
  `language` text NOT NULL,
  `description` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

我应该更改什么才能获得完整数据?

1 个答案:

答案 0 :(得分:3)

我不知道以下是否可行,但......

选项1 - 使用不同的分隔符

您可以将字段分隔符从分号更改为波浪号(〜)。所以你会有:

数据:

1~2~3~D~Testdata: Testing; 100% Perfect

命令:

LOAD DATA LOCAL INFILE '/tmp/phpz4m7Rl' INTO TABLE mytable FIELDS TERMINATED BY '~' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n';

选项2 - 附上

或者您可以将包含带分号的分号的任何数据括起来:

数据

1;2;3;D;"Testdata: Testing; 100% Perfect"

并使用原始命令:

LOAD DATA LOCAL INFILE '/tmp/phpz4m7Rl' INTO TABLE mytable FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n';

选项3 - 退出

或者解决问题分号:

1;2;3;D;Testdata: Testing\; 100% Perfect

并使用原始命令:

LOAD DATA LOCAL INFILE '/tmp/phpz4m7Rl' INTO TABLE mytable FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n';
祝你好运!