2010-10-20 30 views
6

SqlBulkCopy có thể tạo ra một bảng, giống như một INTO SELECT?SqlBulkCopy có thể tạo một bảng từ một lựa chọn Sql

+0

Tôi muốn di chuyển dữ liệu từ cơ sở dữ liệu Oracle sang cơ sở dữ liệu máy chủ Sql và muốn có bảng đích được tạo tự động, điều này có thể sử dụng SqlBulkCopy không? –

Trả lời

0

Dường như SqlBulkCopy không thể tự tạo bảng. Bảng đích phải được xác định trước. Trong trường hợp các điểm đến đã có một tự động gia tăng sắc (int), chỉ cần sử dụng 1 trong các tuyên bố chọn ví dụ:

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

SQL Server sẽ xử lý tự động tăng của chính nó.

+0

Điều gì sẽ xảy ra nếu tập tin này khác nhau mỗi lần, không có anyway, nó có thể tạo bảng khi đang di chuyển không? – Si8

0

Tôi nghĩ câu trả lời ở trên không rõ ràng lắm.

Bạn phải tạo bảng bằng SQL. Không có cách nào khác. Và nếu bạn chỉ cần để tạo ra cấu trúc cột, sau đó nó là khá đơn giản nếu nguồn của bạn là trong cùng một máy chủ, nó là đủ để làm điều này:

Select * from source_table into destination_table where 1=2 

Nếu nguồn của bạn không phải là trong cùng một máy chủ (ví dụ như nó là excel hoặc dbf tập tin hoặc bất cứ điều gì), điều dễ nhất để làm là để kết nối với nó với ODBC (hoặc SQL nếu có thể), và gửi cho anh ta:

Select * from source_table where 1=2 

và sau đó thu thập kết quả vào DataTable. Sau đó, trong bước thứ hai, bạn nên tạo thủ tục lưu trữ trên máy chủ đích của bạn sẽ lấy bảng đó làm đối số và sau đó chèn nó vào bảng mới.

Một chút chính xác hơn, hãy thử này cho thủ tục SQL: http://www.builderau.com.au/program/sqlserver/soa/Passing-table-valued-parameters-in-SQL-Server-2008/0,339028455,339282577,00.htm

Và tạo đối tượng SqlCommnand trong C# và thêm vào SqlParameter Các thông số bộ sưu tập của mình được SqlDbType.Structured

tôi đã không đi vào từng đơn chi tiết, nhưng hy vọng rằng nó có thể giúp đỡ.

Các vấn đề liên quan