SqlBulkCopy.DestinationTableName 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
服务器上的目标表的名称。
public:
property System::String ^ DestinationTableName { System::String ^ get(); void set(System::String ^ value); };
public string DestinationTableName { get; set; }
member this.DestinationTableName : string with get, set
Public Property DestinationTableName As String
属性值
DestinationTableName 属性的字符串值,如果未提供任何值,则为 null。
示例
以下控制台应用程序演示如何使用已打开的连接批量加载数据。 目标表是 AdventureWorks 数据库中的表。
在此示例中,连接首先用于将数据从SQL Server表读取到SqlDataReader实例。 源数据不必位于 SQL Server;可以使用可读取到 或加载到 IDataReader 的任何DataTable数据源。
重要
除非已按批量复制示例设置中所述创建了工作表,否则此示例不会运行。
提供此代码是为了演示仅使用 SqlBulkCopy 时的语法。 如果源表和目标表位于同一SQL Server实例中,则使用 Transact-SQL INSERT … SELECT
语句复制数据会更轻松、更快。
using Microsoft.Data.SqlClient;
class Program
{
static void Main()
{
string connectionString = GetConnectionString();
// Open a sourceConnection to the AdventureWorks database.
using (SqlConnection sourceConnection =
new SqlConnection(connectionString))
{
sourceConnection.Open();
// Perform an initial count on the destination table.
SqlCommand commandRowCount = new SqlCommand(
"SELECT COUNT(*) FROM " +
"dbo.BulkCopyDemoMatchingColumns;",
sourceConnection);
long countStart = System.Convert.ToInt32(
commandRowCount.ExecuteScalar());
Console.WriteLine("Starting row count = {0}", countStart);
// Get data from the source table as a SqlDataReader.
SqlCommand commandSourceData = new SqlCommand(
"SELECT ProductID, Name, " +
"ProductNumber " +
"FROM Production.Product;", sourceConnection);
SqlDataReader reader =
commandSourceData.ExecuteReader();
// Open the destination connection. In the real world you would
// not use SqlBulkCopy to move data from one table to the other
// in the same database. This is for demonstration purposes only.
using (SqlConnection destinationConnection =
new SqlConnection(connectionString))
{
destinationConnection.Open();
// Set up the bulk copy object.
// Note that the column positions in the source
// data reader match the column positions in
// the destination table so there is no need to
// map columns.
using (SqlBulkCopy bulkCopy =
new SqlBulkCopy(destinationConnection))
{
bulkCopy.DestinationTableName =
"dbo.BulkCopyDemoMatchingColumns";
try
{
// Write from the source to the destination.
bulkCopy.WriteToServer(reader);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
// Close the SqlDataReader. The SqlBulkCopy
// object is automatically closed at the end
// of the using block.
reader.Close();
}
}
// Perform a final count on the destination
// table to see how many rows were added.
long countEnd = System.Convert.ToInt32(
commandRowCount.ExecuteScalar());
Console.WriteLine("Ending row count = {0}", countEnd);
Console.WriteLine("{0} rows were added.", countEnd - countStart);
Console.WriteLine("Press Enter to finish.");
Console.ReadLine();
}
}
}
private static string GetConnectionString()
// To avoid storing the sourceConnection string in your code,
// you can retrieve it from a configuration file.
{
return "Data Source=(local); " +
" Integrated Security=true;" +
"Initial Catalog=AdventureWorks;";
}
}
注解
如果在 DestinationTableName 调用 时 WriteToServer 尚未设置 , ArgumentNullException 则会引发 。 如果在 DestinationTableName 操作运行时修改 WriteToServer ,则更改不会影响当前操作。 下次调用方法时WriteToServer将使用新DestinationTableName值。
DestinationTableName 是由三部分组成的名称 (<database>.<owningschema>.<name>
)。 可以使用表名称的数据库和所属架构(如果选择)对表名称进行限定。
但是,如果表名称使用下划线 (“_”) 或任何其他特殊字符,则必须像在 () [<database>.<owningschema>.<name_01>]
一样,使用括在括号中转义名称。
可以使用 或 等tempdb..#table
tempdb.<owner>.#table
值将数据大容量复制到临时表,以用于 DestinationTableName 属性。