【问题标题】:SQL BULK INSERT with on the fly table creationSQL BULK INSERT 与动态表创建
【发布时间】:2012-01-06 13:17:45
【问题描述】:

我想使用 BULK INSERT 将几百个原始数据表加载到 SQL Server 中。这些表格的格式会相似,但并不完全相同(它们来自没有严格版本控制的 Excel 表格)。

我想知道是否有一种方法可以根据要加载的文件中的标头动态生成 SQL Server 上所需的表,然后再进行 BULK INSERT。

【问题讨论】:

  • 这需要在 TSQL 中完成,还是您愿意/能够编写一些 .NET 代码?
  • 最好在 TSQL 中,但如果必须的话,我会设置一个小型 .net 应用程序

标签: sql-server sql-server-2008-r2 bulkinsert


【解决方案1】:

您可以使用 OPEN ROWSET 连接到这些 Excel 表。然后,执行以下操作:

SELECT *
FROM Excel
INTO NewTable
WHERE 0=1

这将传输架构。这是你想要的吗?

【讨论】:

  • 是的,这行得通。是这样吗(在将 xls 文件转换为 csv 的中间步骤之后 - 这并不是真正必要的): SELECT * into NewTable FROM OPENROWSET ('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *. csv)};DBQ=C:\FolderName\;', 'SELECT * from [filename.csv]');
  • 请注意,SQL 从电子表格派生的默认类型非常糟糕。此表处于错误状态。
【解决方案2】:

您可以制作一个excel脚本来生成用于创建表的sql语句,然后在批量插入数据之前执行文件。

【讨论】:

    猜你喜欢
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多