2012-07-27 44 views
0

現在我有這種情況發生有所有數據的文本文件在以下string工作彼此相鄰,如:AB005103012ES-** OF**MID115748607.83插入逗號爲文本的MYSQL

不過,我需要上傳此到MYSQL數據庫,因此理想情況下,轉化的格式將有代碼,像這樣用逗號分開:

AB00,51,0301,2,ES-**, ,O,F,**,M,I,D,1,157486,07.83 

我處理大約14萬行和逗號將每一次出現在相同的字符位置。正如第一個逗號在每行中的第四個字符之後出現,第二個逗號將出現在每行的第六個逗號之後,依此類推。

有沒有什麼辦法可以在MYSQL中很快達到這個目的呢,或者說失敗了,另一個簡單的程序可以輕鬆運行嗎?

回答

0

您可以使用INFILE和SUBSTR(substring)命令。

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

要裝入固定寬度列的文本文件,我使用的形式:

LOAD DATA LOCAL INFILE '<file name>' INTO TABLE <table> 
(@var1) 
SET Date=str_to_date(SUBSTR(@var1,3,10),'%m/%d/%Y'), 
Time=SUBSTR(@var1,14,8), 
WindVelocity=SUBSTR(@var1,26,5), 
WindDirection=SUBSTR(@var1,33,3), 
WindCompass=SUBSTR(@var1,38,3), 
WindNorth=SUBSTR(@var1,43,6), 
WindEast=SUBSTR(@var1,51,6), 
WindSamples=SUBSTR(@var1,61,4); 
+0

在您的例子是那些諸如WindVelocity的字段已經被定義爲表的一部分或者是不同表的一部分?並且@ var1是第一個表的屬性? – user1556352 2012-07-27 01:12:31

+0

是的,這些是被導入到表中的列。 @ var1表示由INFILE處理的給定行。您基本上必須放入列名稱和適當的SUBSTR命令,以指定每列中給定行中使用的字符範圍。 – 2012-07-27 01:31:11

0

我將在記事本中運行一個簡單的宏++

+0

好 - 假設這是一個關閉...如果你需要重複未來的文本文件 - 也許更永久 – Randy 2012-07-27 01:03:37

+0

據我所知,這將不得不在未來的文本文件上運行,但格式應該是相同的在將來的文本文件中,以及逗號將始終在每一行中的相同位置。你介意更多關於這個宏的介紹嗎? – user1556352 2012-07-27 01:14:21

+0

確定 - 在記事本++中,你可以說'開始記錄',然後按照你喜歡的方式在第一行插入逗號,然後說'停止記錄' - 從那裏你可以爲文件的每一行運行'宏' - 它會將所有逗號壓縮到最後。 - 然後保存並根據需要使用 – Randy 2012-07-27 11:08:51