【问题标题】:Can SqlBulkCopy create a table from a Sql selectionSqlBulkCopy 可以从 Sql 选择中创建表吗
【发布时间】:2010-10-20 05:35:01
【问题描述】:

SqlBulkCopy 可以创建一个表,类似于 SELECT INTO 吗?

【问题讨论】:

  • 我想将数据从 Oracle 数据库移动到 Sql 服务器数据库,并希望自动创建目标表,这可以使用 SqlBulkCopy 吗?

标签: sqlbulkcopy


【解决方案1】:

我认为上面的答案不是很清楚。

您必须使用 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对象并将SqlParameter添加到它的Parameters集合中,即SqlDbType.Structured

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

【讨论】:

    【解决方案2】:

    SqlBulkCopy 好像不能自己创建表。必须预定义目标表。在目的地有一个自动增量标识(int)的情况下,只需在选择语句中使用 1 即

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

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

    【讨论】:

    • 如果文件每次都不一样怎么办,是不是也可以动态创建表?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    相关资源
    最近更新 更多