Può SqlBulkCopy creare una tabella da una selezione Sql

sqlbulkcopy

Domanda

Può SqlBulkCopy creare una tabella, un po 'come SELECT INTO?

Risposta accettata

Sembra che SqlBulkCopy non possa creare tabelle da solo. La tabella di destinazione deve essere predefinita. Nel caso in cui la destinazione abbia un'identità auto incrementale (int), basta usare un 1 nell'istruzione select ie

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

SQL Server gestirà autonomamente l'incremento automatico.


Risposta popolare

Penso che la risposta sopra non fosse abbastanza chiara.

È necessario creare una tabella con SQL. Non c'è altro modo. E se hai solo bisogno di creare una struttura a colonne, allora è abbastanza semplice se la tua fonte si trova nello stesso server, è sufficiente farlo:

Select * from source_table into destination_table where 1=2

Se la tua fonte non si trova nello stesso server (ad esempio file excel o dbf o qualsiasi altra cosa), la cosa più semplice da fare è collegarsi ad esso con ODBC (o SQL se possibile) e inviarlo:

    Select * from source_table where 1=2

e quindi raccogliere i risultati in DataTable. Quindi, nella seconda fase, dovresti creare una stored procedure sul tuo server di destinazione che prenderà quella tabella come argomento e poi la inserirà nella nuova tabella.

Un po 'più precisamente, prova questo per la procedura SQL: http://www.builderau.com.au/program/sqlserver/soa/Passing-table-valued-parameters-in-SQL-Server-2008/0,339028455,339282577 , 00.htm

E crea l'oggetto SqlCommnand in c # e aggiungi alla sua collezione Parameters SqlParameter che è SqlDbType.Structured

Non sono andato in ogni singolo dettaglio, ma spero che possa essere d'aiuto.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché