MySql导入奇怪的行为

时间:2014-09-11 10:42:53

标签: mysql

我正在尝试导入由制表符分隔的csv文件。

这是我的查询

LOAD DATA LOCAL INFILE 'c:/news.csv'
INTO TABLE news
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\r'
(url, storyid, title, date, details, category, author);

只会加载第一列(url)。

其余部分显示NULL。我已经尝试了\n终止的行。结果相同。

有什么建议吗?

Table structure for table `news`
--

CREATE TABLE IF NOT EXISTS `news` (
`url` varchar(62) DEFAULT NULL,
`storyid` int(15) DEFAULT NULL,
`title` varchar(255) DEFAULT NULL,
`date` date DEFAULT NULL,
`details` longtext,
`category` varchar(255) DEFAULT NULL,
`author` varchar(110) DEFAULT NULL
) 

3 个答案:

答案 0 :(得分:1)

这取决于.csv文件的确切格式,但对于Windows .csv格式,我总是使用

LINES TERMINATED BY '\r\n'

也(再次取决于数据)尝试

FIELDS ESCAPED BY '\\' TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '\"'

如果您不确定数据的确切性质,有时最好以十六进制查看它以查看线路是如何真正终止的。我使用Hexedit - http://www.hexedit.com/

希望这会有所帮助。 德莫特

答案 1 :(得分:0)

就像我在评论中所说,你可以使用' / r / n'换行。

但是,您的csv文件只包含1列,即整行文本。 这可能也是为什么只填充第一个表列而其余为空的原因。

答案 2 :(得分:0)

LOAD DATA LOCAL INFILE 'c:/news.csv'
INTO TABLE news
COLUMNS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
(url, storyid, title, date, details, category, author)

这很有用。

原来,即使它看起来与标签分开,也以逗号分隔。 Dermot是对的,您需要以十六进制视图查看它,看看它是如何被真正消除的。