2016-11-10 23 views
1

我試圖將GTFS文件(以逗號分隔的文本文件)加載到MySQL數據庫。 MySQL Workbench導入嚮導不起作用。我將agency.txt文件複製到agency.csv並使用嚮導進行選擇。經歷了所有的步驟;一切都是綠色的複選標記,但它說'末尾輸入0記錄'。沒有錯誤,沒有警告。 我使用mysql shell。 這是我的文件:將逗號分隔的文本文件加載到MySQL:無法正常工作

>>head -2 agency.csv 
agency_name,agency_url,agency_timezone,agency_lang,agency_phone,agency_fare_url 
Chicago Transit Authority,http://transitchicago.com,America/Chicago,en,1-888-YOURCTA,http://www.transitchicago.com/travel_information/fares/default.aspx 

這是我的SQL腳本創建一個表並加載數據:

CREATE TABLE agency (
    agency_name VARCHAR(255) character set utf8, 
    agency_id VARCHAR(255) character set utf8, 
    agency_url VARCHAR(255) character set utf8, 
    agency_timezone VARCHAR(255) character set utf8 
); 
LOAD DATA LOCAL INFILE '/cta/agency.csv' INTO TABLE agency 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
IGNORE 1 LINES 
(agency_name,@vagency_id,agency_url,agency_timezone) 
SET agency_id = IF(agency_id IS NULL, agency_name, @vagency_id); 

,這就是被裝載到表:

mysql> select * from agency; 
+---------------------------+---------------------------+----------------------------+-----------------+ 
| agency_name    | agency_id     | agency_url     | agency_timezone | 
+---------------------------+---------------------------+----------------------------+-----------------+ 
| Chicago Transit Authority | Chicago Transit Authority | America/Chicago   | en    | 

請注意,表中的Agency_url是America/Chicago(時區不是網址)。

我對sql技術並不是很有經驗,但我認爲把數據放到數據庫中應該不那麼困難。有人能告訴我 1.爲什麼會發生這種情況? 2.如何解決?

回答

0

指的是在設置實際值之前,SET子句中的agency_id列。因此,它是NULL導致第二列被分配第一列的值。你的代碼改成這樣:

SET agency_id = IF(@vagency_id IS NULL, agency_name, @vagency_id); 
        ^^^ DON'T use agency_id here 

全碼:

LOAD DATA LOCAL INFILE '/cta/agency.csv' INTO TABLE agency 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
IGNORE 1 LINES 
(agency_name, @vagency_id, agency_url, agency_timezone) 
SET agency_id = IF(@vagency_id IS NULL, agency_name, @vagency_id); 
+0

嘿@Tim感謝您的回答。你的建議查詢並沒有做我想要的。此時間代理網址位於agency_id字段中。 – melis

+0

順便說一下,agency_id是GTFS中的一個可選字段。我想使用agency_id字段作爲代理和路由表之間的外鍵。這就是我試圖設置agency_id的原因。 – melis

+0

'這個時間機構的網址是在agency_id字段中。「......我不明白這是怎麼可能的。你確定你發佈了實際的查詢和數據嗎? –