我使用下面的sql使用mysql的"load data"导入数据。描述字段包含分号,因此分号之后的内容不会插入
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 -使用不同的分隔符
可以将字段分隔符从分号更改为类似波浪号(~)的东西。所以你会得到:
数据:
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';
祝你好运!