【发布时间】:2011-11-22 07:25:37
【问题描述】:
我们将来自不同来源的大量数据文件(主要是 Excel,有时是 CSV)导入 SQL Server 数据库。数据文件有一些公共字段(姓名、地址等),通常还有其他字段——一些我们需要/使用,一些我们不需要。
如何导入文件中的所有数据 - 将常用/必填字段插入相关列,同时将其他剩余列合并到单个列(文本或 varchar(max))?这可能吗?我不介意 Excel/SQL Server 的版本。
所以我可能会收到一个源文件,例如
FirstName, LastName, AddressLine1, City, ColumnE, ColumnF, DateColumn, ColumnH
这在 SQL Server 中存储为
FirstName nvarchar(25)
LastName nvarchar(25)
AddressLine1 nvarchar(50)
City nvarchar(30)
OtherData nvarchar(max)
当然,OtherData 列需要包含一些分隔符来标识导入的 Excel 列。
我们只需要使用“通用”列,但是当我们导出数据(通常只是原始行的一个子集)时,我们可以更轻松地包含 OtherData,而不是创建自定义表用于每个不同的数据文件或与 Excel 合并。
编辑:我可以通过在数据文件中添加许多额外的列作为自定义分隔符来实现这一点,然后使用 BULK INSERT,但这非常耗时。
【问题讨论】:
-
您导入数据的具体情况如何?您使用的是 SSIS 还是 BULK Insert 还是什么?
-
通常是 SSIS(或导入向导)——大多数时候它是来自新源(不同客户端)的全新数据文件,我们要么忽略很多“其他数据”,要么创建专门用于此数据文件的表。我们的任务不需要“其他数据”,但是当返回给客户端时,我们经常需要将其缝合在一起。我想知道是否有比创建有时要导入的 30-50 个额外冗余列或我们之后使用 Excel 跳过的箍更简单的方法。
标签: sql-server excel