使用 SqlBulkCopy,如何将数据插入到非默认数据库模式的表中?
我需要使用 SqlBulkCopy
将数据插入名为 Staging
的架构中的表中。
看来 API 只允许您使用 DestinationTableName
属性设置目标表名称。
我该如何实现这个目标?是否可以?
I need to insert data into a table in a schema named Staging
using SqlBulkCopy
.
It appears the API only allows you to set the target table name by using the DestinationTableName
property.
How do I accomplish this? Is it possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
虽然 API 不提供显式接口来设置目标架构,但您实际上可以将 2 部分或 3 部分限定表名称填充到 DestinationTableName 属性如下:
或
鉴于 BULK INSERT 始终支持完全限定的表名,这似乎是一个很大的疏忽这些单独的组件从未进入 API。
此外,由于
DestinationTableName
似乎只是简单地输出到BULK INSERT
语句中,因此该属性可能容易受到 SQL 注入的攻击。因此,如果您在某个时刻从用户那里获取此信息,请确保在运行此操作之前清理输入。While the API does not provide an explicit interface to set the destination schema, you can actually stuff a 2- or 3-part qualified table name into the DestinationTableName property like so:
or
Given that BULK INSERT has always supported a fully-qualified table name, it seems like a big oversight that those separate components never made it into the API.
Moreover, as it appears that
DestinationTableName
is simply output into aBULK INSERT
statement, this property may be vulnerable to SQL injection. So if you're getting this information from a user at some point, make sure to sanitize the input before running this operation.