我正在尝试将数据加载到表中(显然?)。我的表看起来像这样:
CREATE TABLE IF NOT EXISTS `condensed` (
`id` bigint(20) NOT NULL,
`src` enum('C_X','C_AH','C_AO','C_B','H_X','H_AH','H_AO','H_B') NOT NULL,
`hash` int(11) default NULL,
`ihash` int(11) default NULL,
`last_updated` datetime default NULL,
PRIMARY KEY (`id`,`src`),
UNIQUE KEY `covering` (`id`,`src`,`hash`)
) ENGINE=MyISAM DEFAULT CHARSET=ascii;
我有这样的数据文件:
320115816,'C_X',692983698,854142703,20120216220954
320124536,'C_X',588472049,1059436251,20100527232845
320120196,'C_X',452117509,855369958,20101118105505
...
但是当我加载它时使用
LOAD DATA INFILE '/path/to/data.csv'
IGNORE
INTO TABLE `condensed`
(id, src, hash, ihash, last_updated);
它只加载前两列(hash、ihash 和 last_updated 为空)。
320115816,'C_X',NULL,NULL,NULL
320124536,'C_X',NULL,NULL,NULL
320120196,'C_X',NULL,NULL,NULL
...
我确实收到了很多警告(大概是因为 mysql 丢弃了输入集中的 3 列并分配了默认值)
Query OK, 20 rows affected, 100 warnings (0.00 sec)
Records: 20 Deleted: 0 Skipped: 0 Warnings: 100
(我打算加载数百万条记录 - 而不仅仅是 20 条)
我在使用 mysqlimport 时遇到了同样的问题。
从 LOAD DATA 语句中省略显式字段列表(数据库中的字段和顺序与文件中的相同)导致相同的结果。
MySQL版本为5.0.22,输入文件中没有非打印字符。
帮助!
最佳答案
如果您使用的是 Windows,只需对 Thilo 的答案进行一些改进即可。
LOAD DATA INFILE '/path/to/data.csv' IGNORE
INTO TABLE `condensed`
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\''
LINES TERMINATED BY '\r\n' --Windows right line terminator
(id, src, hash, ihash, last_updated)
它对我有用。它解决了我在 Windows 上的所有截断问题。也看看这个: http://forums.mysql.com/read.php?79,76131,76871
关于Mysql LOAD DATA INFILE - 输入数据意外截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11413041/