2011-11-15 70 views
2

我有一個excel文件,其中有一列包含每行的逗號分隔ID號,每行都包含另一列文本,例如,如何將Excel文件中的逗號分隔值轉換爲獨立行,然後將其插入數據庫?

IDs  Text 
1   This is a row of text 
2,3  Another row of text 
4,5,6  More text in this row 

我需要將文本插入到數據庫中,以便在第一列的每個ID被分成了自己的行,文本插入,它與相關的每個ID。

數據庫中的結果將是,例如,

ID Text 
1 This is a row of text 
2 Another row of text 
3 Another row of text 
4 More text in this row 
5 More text in this row 
6 More text in this row 

Excel 2010或Sql Server 2008中是否有任何功能可以爲我做到這一點?

否則,Excel中是否有可以將逗號分隔值拆分爲行的功能?我知道有一種工具可以將它們分成新的列,但我需要行。如果我可以將它們放入行中,我可以製作副本以獲取與相應ID關聯的文本。

回答

3

你可以寫一個簡單的小宏,將產生對你的INSERT語句,然後你可以只複製和那些粘貼到Management Studio中:

Dim i as Integer, j as Integer 
Dim ids as Variant 


For i = 0 To 100 
    ids = Split(ActiveSheet.Cells(i, 1).Value) 

    For j = 0 To UBound(ids) 
     ActiveSheet.Cells(i, 3 + j).Value = "INSERT INTO myTable VALUES (" & ids(j) & ", " ActiveSheet.Cells(i, 2).Value & ")"  
    Next j 
Next i 

顯然,有寫的更有效的方法循環和分割邏輯,但爲了生成SQL的快速實用工具,這應該很好。

更新:增加了「+ J」的列映射爲輸出,否則就會粘在上一次的頂部每串,哎呀呀:)

0

如果你有分裂功能,您可以使用下面的語句,以獲得所需的輸出

select val, Text 
from ExcelTBL1 
cross apply dbo.split(ExcelTBL1.IDs,',') 

運行上面的腳本之前,你可以上傳數據到Excel中一個臨時表使用例如SSIS任務到SQL Server。 則可以執行以上INSERT INTO SQL ... SELECT ... FROM statemtent

對於分割功能的例子,請參閱: http://www.kodyaz.com/articles/t-sql-convert-split-delimeted-string-as-rows-using-xml.aspx http://www.kodyaz.com/articles/sql-server-string-split-tsql-clr-function-sample.aspx

而對於SSIS任務來導入逗號分隔值數據請參考: http://www.kodyaz.com/articles/import-csv-flat-file-into-sql-server-using-ssis-integration-services.aspx http://www.kodyaz.com/articles/sql-server-import-data-sql-server-import-export-data-wizard-ssis-package.aspx

相關問題