2017-02-21 85 views
0

我建立了一個數據庫6桌,大致175場。大約130個這些字段將從CSV上的數據填充。閱讀長CSV文件,並分成多個表

目前,手持設備導出此CSV並將其讀入電子表格,但它正在轉移到數據庫。因此,在前端有人上傳CSV時,它將填充數據庫。

問:

我試圖找出打破這種CSV了一行行,並把某些信息到某個表的最佳途徑。那可能嗎?如果是這樣如何?

我希望我可以查詢爲每個CSV字段創建一個header並將其映射到數據庫字段(因爲CSV將始終以相同的順序)。

回答

0

我不認爲它是一個RBAR問題。如果將文件原樣加載到單個臨時表中,則可以爲每個表運行如下所示的操作: INSERT INTO destTable(col1,col2) SELECT col1,col2 FROM StageTable WHERE col3 ='criteria'

這樣,你保持一切基於集。當然,這取決於涉及的記錄數量,但逐行處理數據和TSQL通常不太合適。 SSIS比TSQL做得好得多。

+0

這很有道理,但我忘了一點。這些CSV將每天在任何地方從每天10到30個閱讀。我們每個CSV有6個桌面,所有內容都是分開的。所以基本上只需創建一個臨時表,其中將放置每個CSV(所有字段),然後讓查詢將這些內容推送到實時表中? –

0

在列例如標籤它通過關聯數組

ID,名稱,顏色 1,JO,紅色 2毫安,藍色 3,J,黃色

得到在一個陣列中的第一行,所以只需通過索引比較循環中的值