sql-server - 如何将多个 Excel 列导入单个 SQL Server 列?

标签 sql-server excel

我们将来自不同来源的大量数据文件(主要是 Excel,有时是 CSV)导入 SQL Server 数据库。数据文件有一些公共(public)字段(姓名、地址等),通常还有其他字段——一些我们需要/使用,一些我们不需要。

如何导入文件中的所有数据 - 将常用/必填字段插入相关列,同时将其他剩余列合并到单个列(文本或 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,但这非常耗时。

最佳答案

作为一个粗略的想法,如果您知道 excel 中的选项卡名称,则可以使用 C# 和 OLE DB/JET 12 驱动程序将数据读入数据集(基本上是 SELECT * FROM [tabname])。 CSV 可以更简单地加载。那时,只需将其打入数据库即可。

如果您对这种方法感兴趣,我今晚可能会刮出一些伪代码。

关于sql-server - 如何将多个 Excel 列导入单个 SQL Server 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7506339/

相关文章:

sql-server - 需要一个 SQL Server 函数将本地日期时间转换为支持 DST 的 UTC

Javascript:将文本区域列表循环到数组中

excel - 如何使用 Excel 文件中的文本数据列作为 x 轴进行绘图?

vlookup公式上的excel宏vba

excel - SolverAdd 函数忽略了我的约束

sql-server - 选择由另一个表中的另一列命名的列

sql - 在Sql Server中,对象的object_id是否会发生变化?

sql-server - 如何对持久性进行单元测试?

SQL 从 3 个表中选择数据

excel - 使用 Microsoft Graph API 在 shareddriveitem/driveitem 资源中找不到工作簿关系