2010-10-20 2 views
6

Может ли SqlBulkCopy создать таблицу, похожую на SELECT INTO?Может ли SqlBulkCopy создать таблицу из выбора Sql

+0

Я хотел бы переместить данные из базы данных Oracle в базу данных сервера Sql и хотел бы, чтобы таблицы назначения создавались автоматически, возможно ли это с помощью SqlBulkCopy? –

ответ

0

Кажется, что SqlBulkCopy не может создавать таблицы самостоятельно. Таблица назначения должна быть предопределена. В том случае, когда адресат попавшего авто инкрементных идентичностей (INT), просто использовать 1 в операторе отбора т.е.

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

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

+0

Что делать, если файл отличается каждый раз, не существует ли он в любом случае, он может создать таблицу на лету? – Si8

0

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

Необходимо создать таблицу с SQL. Другого пути нет. А если вам нужно просто создать структуру столбца, то это довольно просто, если ваш источник находится в том же сервере, достаточно, чтобы сделать это:

Select * from source_table into destination_table where 1=2 

Если ваш источник не в том же сервере (например, это первенствовать или 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# и добавить в свою коллекцию Parameters SqlParameter что SqlDbType.Structured

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

Смежные вопросы