¿Puede SqlBulkCopy crear una tabla a partir de una selección de SQL?

sqlbulkcopy

Pregunta

¿Puede SqlBulkCopy crear una tabla, algo así como un SELECT INTO?

Respuesta aceptada

Parece que SqlBulkCopy no puede crear tablas por sí mismo. La tabla de destino tiene que estar predefinida. En el caso de que el destino tenga una identidad incremental automática (int), simplemente use un 1 en la declaración de selección, es decir

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

SQL Server manejará el incremento automático por sí mismo.


Respuesta popular

Creo que la respuesta anterior no fue muy clara.

Debe crear la tabla con SQL. No hay otra manera. Y si solo necesita crear una estructura de columna, entonces es bastante simple si su fuente está en el mismo servidor, es suficiente para hacer esto:

Select * from source_table into destination_table where 1=2

Si su fuente no está en el mismo servidor (por ejemplo, es un archivo excel o dbf o lo que sea), lo más fácil es conectarse con ODBC (o SQL si es posible) y enviarlo:

    Select * from source_table where 1=2

y luego recoger el resultado en DataTable. Luego, en el segundo paso, debe crear un procedimiento almacenado en su servidor de destino que tome esa tabla como argumento y luego insértelo en la nueva tabla.

Un poco más precisamente, intente esto para el procedimiento de SQL: http://www.builderau.com.au/program/sqlserver/soa/Passing-table-valued-parameters-in-SQL-Server-2008/0,339028455,339282577 , 00.htm

Y cree el objeto SqlCommnand en c # y agréguelo a su colección de parámetros SqlParameter que es SqlDbType.Structured

No entré en todos los detalles, pero espero que pueda ayudar.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué