SqlBulkCopy可以从Sql选择中创建一个表

sqlbulkcopy

SqlBulkCopy可以创建一个表,有点像SELECT INTO吗?

一般承认的答案

看来SqlBulkCopy本身无法创建表。必须预定义目标表。在目标具有自动增量标识(int)的情况下,只需在select语句中使用1即ie

SELECT 
    1, 
    [ColumnName],
    [ColumnName]...
FROM TABLENAME

SQL Server将自行处理自动增量。


热门答案

我认为上面的回答并不十分清楚。

您必须使用SQL创建表。没有其他办法。如果您只需要创建列结构,那么如果您的源位于同一服务器中则非常简单,只需执行此操作即可:

Select * from source_table into destination_table where 1=2

如果您的源不在同一服务器中(例如,它是excel或dbf文件或其他),最简单的方法是使用ODBC(或SQL,如果可能)连接它,并发送给他:

    Select * from source_table where 1=2

然后将结果收集到DataTable中。然后在第二步中,您应该在目标服务器上创建存储过程,该存储过程将该表作为参数,然后将其插入新表中。

更确切地说,尝试使用SQL过程: http//www.builderau.com.au/program/sqlserver/soa/Passing-table-valued-parameters-in-SQL-Server-2008/0,339028455,339282577 ,00.htm

并在c#中创建SqlCommnand对象并添加到其Parameters集合SqlParameter,即SqlDbType.Structured

我没有详细介绍每一个细节,但希望它可以提供帮助。



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因