我怎样才能从一个Excel文件中得到逗号分隔的值到个人的行,这反过来将被插入到数据库?

我有一个Excel文件,其中有一列包含每行的逗号分隔的ID,每行包含另一列文本,例如

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中有什么function可以为我做到这一点?

否则,Excel中是否有可以将逗号分隔值拆分成行的function? 我知道有一个工具,可以将它们分成新的列,但我需要行。 如果我可以把它们放入行中,我可以做一个副本来获取与相应ID相关的文本。

您可以编写一个简单的小macros来为您生成插入语句,然后将其复制并粘贴到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”到输出的列映射,否则你会坚持每一个string上的前一个,哎呀:)

如果您有拆分function,则可以使用以下语句来获得所需的输出

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

在运行上述脚本之前,可以使用SSIS任务将数据上载到从Excel到SQL Server的临时表中。 然后你可以用INSERT INTO … SELECT … FROM statemtent执行上面的sql

对于分割function的例子,请参考: 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