2011-06-02 55 views
-1

我試圖將數據從文本文件導入到SQL數據庫。該文件不使用TAB來分隔字段。我關於導入的問題是,當我編寫作爲Int給出的Time時,它完全混淆了導入。該文本文件的SQL將INT轉換爲時間

部分:

 
North Felix 2011-07-01 0422 0.47 0012 0.69 2109 0.55 1311 1.44 
North Felix 2011-07-02 0459 0.43 0048 0.72 2140 0.55 1342 1.47 
North Felix 2011-07-03 0533 0.41.75 2213 0.57 1412 1.46 
North Felix 2011-07-04 0605 0.41 0158 0.79 2244 0.59 1441 1.41 

我的查詢結果:

INSERT INTO `dbc`.`history_long` (`Region`,`Location`,`Date`,`LT1-time`,`LT1-height`,`HT1-time`,`HT1-height`,`LT2-time`,`LT2-height`,`HT2-time`,`HT2-height`) 
values ('North','Felix','2011:00:00','422:00:00','0.47','12:00:00','0.69','2109:00:00','0.55','1311:00:00','1.44'), 
('North','Felix','2011:00:00','459:00:00','0.43','48:00:00','0.72','2140:00:00','0.55','1342:00:00','1.47'), 
('North','Felix','2011:00:00','533:00:00','0.41','123:00:00','0.75','2213:00:00','0.57','1412:00:00','1.46'), 
('North','Felix','2011:00:00','605:00:00','0.41','158:00:00','0.79','2244:00:00','0.59','1441:00:00','1.41'), 

的問題是,例如L2-時間變爲2109:00:00的時間列。有沒有辦法將此從Int轉換爲Time?

+1

除非您使用我見過的最具水果的SQL實現,否則這不可能*關閉*到真正的查詢中。列名在插入語句的列列表中用逗號分隔,而單獨的列值通常作爲單獨的參數和/或文字(再次以逗號分隔)提供。那麼你在使用什麼SQL產品? – 2011-06-02 06:59:46

+0

...並提供真實的日期代碼 – gbn 2011-06-02 07:30:46

+0

對不起,希望這會更好。現在看看,你可以看到我正在閱讀的數據,上面的4條線。我現在將它導入Navicat,這就是我正在完成的查詢結果。 我手動編寫了一個查詢,類似於Navicat生成的內容,但僅使用完整的INT,而沒有:分隔小時:分鐘:秒,數據庫將不接受它,因爲它的時間列設置爲使用時間,所以它只是擰緊。 來源(文本文件)中有大約160,000行數據,所有TAB分隔,時間全部以4位24小時INT表示。 – Joel 2011-06-02 12:09:01

回答

0

這裏是你如何能一個int0422轉換爲time值:

SELECT CAST('00:00' AS time) 
    + INTERVAL (@IntValue DIV 60) HOUR 
    + INTERVAL (@IntValue % 60) MINUTE 

沒有看到您的導入查詢這是不可能說你怎麼能實際應用它。