我需要使用 SqlBulkCopy
将数据插入到名为 Staging
的模式中的一个表中。
似乎该 API 只允许您通过使用 DestinationTableName
属性来设置目标表的名称。
我该如何完成这个任务?这可能吗?
我需要使用 SqlBulkCopy
将数据插入到名为 Staging
的模式中的一个表中。
似乎该 API 只允许您通过使用 DestinationTableName
属性来设置目标表的名称。
我该如何完成这个任务?这可能吗?
尽管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 注入攻击。因此,如果您在某个时候从用户那里获取这些信息,请务必在运行此操作之前对输入进行清理处理。