使用 SqlBulkCopy,如何将数据插入到非默认数据库架构中的表中?
Posted
技术标签:
【中文标题】使用 SqlBulkCopy,如何将数据插入到非默认数据库架构中的表中?【英文标题】:Using SqlBulkCopy, how do I insert data into a table in a non-default database schema? 【发布时间】:2011-05-19 06:10:08 【问题描述】:我需要使用SqlBulkCopy
将数据插入到名为Staging
的架构中的表中。
API 似乎只允许您使用DestinationTableName
属性设置目标表名称。
我该如何做到这一点?有可能吗?
【问题讨论】:
【参考方案1】:虽然 API 不提供设置目标架构的显式接口,但您实际上可以将 2 部分或 3 部分限定表名填充到 DestinationTableName 属性中,如下所示:
b.DestinationTableName = string.Format("[0].[1]", schemaName, tableName);
或
b.DestinationTableName =
string.Format("[0].[1].[2]", databaseName, schemaName, tableName);
鉴于 BULK INSERT 一直支持完全限定的表名,这些单独的组件从未进入 API 似乎是一个很大的疏忽。
此外,由于DestinationTableName
似乎只是简单地输出到BULK INSERT
语句中,因此该属性可能容易受到SQL 注入的攻击。因此,如果您在某个时候从用户那里获取此信息,请确保在运行此操作之前清理输入。
【讨论】:
以上是关于使用 SqlBulkCopy,如何将数据插入到非默认数据库架构中的表中?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SqlBulkCopy 并通过 Glimpse 跟踪批量插入
使用SqlBulkCopy将DataTable中的数据批量插入数据库中
使用SqlBulkCopy 从sybase复制表到sqlserver中遇到重复的数据怎么办? 能不能设置什,跳过该次插入