Может ли SqlBulkCopy создать таблицу из выбора Sql

Может ли SqlBulkCopy создать таблицу вроде SELECT INTO?


person BK.    schedule 20.10.2010    source источник
comment
Я хотел бы переместить данные из базы данных Oracle в базу данных сервера Sql и хотел бы, чтобы целевые таблицы создавались автоматически, возможно ли это с помощью SqlBulkCopy?   -  person BK.    schedule 21.10.2010


Ответы (2)


Я думаю, что ответ выше был не совсем ясным.

Вы должны создать таблицу с помощью 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

И создайте объект SqlCommnand в C # и добавьте в его коллекцию параметров SqlParameter, который является SqlDbType.Structured

Я не вдавался в подробности, но надеюсь, что это может помочь.

person Ivan Ičin    schedule 14.01.2011

Похоже, что SqlBulkCopy не может самостоятельно создавать таблицы. Целевая таблица должна быть предварительно определена. В случае, если у пункта назначения есть автоинкрементный идентификатор (int), просто используйте 1 в операторе выбора, т.е.

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

SQL Server будет обрабатывать автоматическое приращение самостоятельно.

person BK.    schedule 25.10.2010
comment
Что, если файл каждый раз разный, разве он не может создать таблицу на лету? - person Si8; 05.06.2014