2012-01-03 65 views
0

我嘗試使用下面的命令從SQL Server導出的數據加載到MySQL:MySQL的LOAD DATA INFILE忽略最後一項

mysql databasename -e"LOAD DATA INFILE '/home/calendar.txt' INTO TABLE events FIELDS TERMINATED BY '\\t' OPTIONALLY ENCLOSED BY '\'' LINES TERMINATED BY '\\n' (id,catid,title,state,created,publish_up,publish_down,event_status,alldayevent,approved,UnSpecifiedEndTime);" 

文件calendar.txt如下格式:

7300 1143 'item 1'  1  2012-01-03 15:30:14  2012-1-8 17:30:00  2012-1-8 00:00:00  Pending 0  1  '1' 
7301 1143 'item 2'  1  2012-01-03 15:30:14  2012-1-8 17:30:00  2012-1-8 00:00:00  Pending 0  1  '1' 
7302 1143 'item 3'  1  2012-01-03 15:30:14  2012-1-8 17:55:00  2012-1-8 00:00:00  Pending 0  1  '1' 
7303 1143 'item 4'  1  2012-01-03 15:30:14  2012-1-8 19:15:00  2012-1-8 00:00:00  Pending 0  1  1 
7304 61  'item 5'  1  2012-01-03 15:30:14  2012-1-8 19:30:00  2012-1-8 00:00:00  Pending 0  1  1 
7644 1053 'item 6' 1  2012-01-03 15:30:14  2012-1-8 00:00:00  2012-1-8 00:00:00  Pending 1  1  1 
7305 1143 'item 7' 1  2012-01-03 15:30:14  2012-1-9 00:00:00  2012-1-9 00:00:00  Pending 1  1  1 
7306 1056 'item 8'  1  2012-01-03 15:30:14  2012-1-9 8:10:00  2012-1-9 00:00:00  Pending 0  1  1 

UnSpecifiedEndTime列未被正確填充,如果您在phpmyadmin中查看它後導入它看起來空白,爲了使它填充您必須添加一個額外的選項卡和字段,這似乎是一個字段計數問題,但我不能發現任何東西,而所有其他領域似乎都在被人口聚居按照正確的順序。

最終場被封閉引號沒有任何區別,我試圖插入字段類型定義爲:

enum('0', '1') 

大加讚賞

SQL任何幫助創建在涉及的表:

CREATE TABLE IF NOT EXISTS `events` (
    `id` int(12) NOT NULL auto_increment, 
    `sid` int(11) NOT NULL default '0', 
    `catid` int(11) NOT NULL default '1', 
    `title` varchar(200) NOT NULL, 
    `content` longtext NOT NULL, 
    `adresse_info` varchar(120) NOT NULL default '', 
    `contact_info` varchar(120) NOT NULL default '', 
    `extra_info` varchar(240) NOT NULL default '', 
    `color_bar` varchar(8) NOT NULL default '', 
    `useCatColor` tinyint(1) NOT NULL default '0', 
    `state` tinyint(3) NOT NULL default '0', 
    `mask` int(11) unsigned NOT NULL default '0', 
    `created` datetime NOT NULL default '0000-00-00 00:00:00', 
    `created_by` int(11) unsigned NOT NULL default '0', 
    `created_by_alias` varchar(100) NOT NULL default '', 
    `modified` datetime NOT NULL default '0000-00-00 00:00:00', 
    `modified_by` int(11) unsigned NOT NULL default '0', 
    `checked_out` int(11) unsigned NOT NULL default '0', 
    `checked_out_time` datetime NOT NULL default '0000-00-00 00:00:00', 
    `publish_up` datetime NOT NULL default '0000-00-00 00:00:00', 
    `publish_down` datetime NOT NULL default '0000-00-00 00:00:00', 
    `images` text NOT NULL, 
    `reccurtype` tinyint(1) NOT NULL default '0', 
    `reccurday` varchar(4) NOT NULL default '', 
    `reccurweekdays` varchar(20) NOT NULL default '', 
    `reccurweeks` varchar(10) NOT NULL default '', 
    `approved` tinyint(1) NOT NULL default '1', 
    `ordering` int(11) NOT NULL default '0', 
    `archived` tinyint(1) NOT NULL default '0', 
    `access` int(11) unsigned NOT NULL default '0', 
    `hits` int(11) NOT NULL default '0', 
    `event_status` enum('Pending','Complete','Postponed','Cancelled') NOT NULL, 
    `postponed_child_eventid` int(11) NOT NULL, 
    `Editor` int(11) NOT NULL, 
    `reason_to_change` text NOT NULL, 
    `alldayevent` tinyint(1) NOT NULL default '0', 
    `UnSpecifiedEndTime` enum('0','1') NOT NULL default '0', 
    `notice_is_holiday` tinyint(1) NOT NULL, 
    `notice_spdesk_ticker` tinyint(1) NOT NULL default '0', 
    PRIMARY KEY (`id`), 
    KEY `catid` (`catid`), 
    KEY `publish_down` (`publish_down`), 
    KEY `publish_up` (`publish_up`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7645 ; 
+0

這可能有助於瞭解表結構和列類型。請將「CREATE TABLE ...」添加到您的帖子中。 – 2012-01-03 17:01:49

+0

您也可以使用[mysqlimport](http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html)工具,該工具也使用LOAD DATA INFILE,但具有更好的語法。 – vadchen 2012-01-03 17:50:15

回答

0

檢查字段分隔在你的文件中,在LOAD DATA INFILE語句是一個製表符符號,但在你的榜樣(文件calendar.txt)他們是白色空間。

而且,變化

FIELDS TERMINATED BY '\\t' to FIELDS TERMINATED BY '\t' 

LINES TERMINATED BY '\\n' to LINES TERMINATED BY '\n'