2011-06-25 39 views
0

我有許多不同的csv文件,我想將其轉換爲數據庫表格。從不一致的csv文件生成數據庫

csv文件並不總是一致的,這意味着列可能始終不在同一個位置。例如:

--First scenario-- 
col1, col2, col3, col4, col5 
1,2,3,4,5 

--second scenario-- 
col3,col4,col1,col5,col2 
3,4,1,5,2 

--The場景的是無止境的,它是沒有可能預測什麼樣的順序列將in--

的信息是相同的,但其中的數據被放置的順序在csv文件中是不同的。我需要能夠生成與csv文件保持一致的數據庫表,因此無論列的順序如何,在創建表時它都將始終採用一種格式。

我在想我可以從csv文件生成一個臨時表,然後將臨時錶轉換爲我所需的格式。但我不確定如何做到這一點,或者如果這是可能的。

謝謝你的時間,希望有人能夠幫助或提供一些關於如何解決此問題的建議。

+1

是否有任何模式的列值?如果沒有,情況看起來很暗淡。再說一遍,如果沒有模式,我想很難知道列是否沒有出現故障。 – Scott

+0

列名不會更改,但有許多不同的文件。我必須將流程自動化,以便能夠以混亂格式上傳csv文件,並且該流程會將列和數據重新排列爲標準格式。 – Toret

+0

如果我正確理解了這一點,我認爲每個文件與其餘文件有不同的列布局,但每個文件的內容與該文件(僅限該文件)是否一致?所以文件「A」具有一致的col1,col3,col2,col5,col4結構,而文件「B」具有col5,col2,col1,col5,col3(可以這麼說)的一致結構? – Scott

回答

0

如果您可以使用第一行來計算出如何以編程方式排列列,那麼您將狀態良好。我不認爲有自動或直接在MySQL中執行此操作的好方法。其次,你可以加載數據,而無需重新安排它,只需設置列名在SQL:

LOAD DATA INFILE 'file.txt' INTO TABLE table (col3, col1, col2, col4)

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

可能需要FIELDS TERMINATED BY ','從TSV更改爲CSV作爲默認格式。

0

這聽起來像你有一些非常繁瑣的工作在你面前。

您可以通過首先在Excel中打開文件,重新排列列然後重新保存爲CSV來加速清理。