2017-01-19 36 views
0

我一直有一個問題好幾天了,並且遇到了一堵磚牆。首先,正如標題所示,我一直在努力將CSV文件導入到SQL數據庫。SQL CSV文件 - 跳過特定列號後的所有列

更具體的說,這是通過服務器上的PHP腳本和通過MySQL將數據庫完成的。

我目前有大約30個CSV文件(這個數字預計會增加),每天更新一次,然後每天觸發一次cron腳本來更新新數據。它通過LOAD DATA INFILE加載文件。所有這些都很完美。

問題是: 每個CSV文件包含不同的列數。列數範圍在50-56列之間。我在這個共同數據庫中存儲的數據只需要前8列。我已經知道如何使用@dummy跳過單個列,這要歸功於以下Q & A:How to skip columns in CSV file when importing into MySQL table using LOAD DATA INFILE?

但是,由於不同列計數,虛擬計數並不總是相同,所以我想知道是否有從列1-8中獲取數據的方式,然後忽略所有後面的列數?

+1

我現在不能測試,但對剛剛只包括八列來填充呢? 'LOAD DATA INFILE'file.txt'INTO TABLE t1(c1,c2,c3,c4,c5,c6,c7,c7,c8)' – AbraCadaver

+0

這實際上是完美的。以前,我嘗試過類似的方法,但是產生了「未知列數」。謝謝 – gooner89

+0

太好了,請接受答案。 – AbraCadaver

回答

0

一個相當粗糙的補丁將首先讀取php中的開始行,以逗號計算列數。然後知道金額,減去8並生成sql命令,現在知道需要忽略的列數。

0

就包括八列來填充,它會爲我們從CSV行的第一個八:

LOAD DATA INFILE 'file.txt' INTO TABLE t1 (c1, c2, c3, c4, c5, c6, c7, c8)