2011-09-05 19 views
16

Ho bisogno di caricare un paio di migliaia di file di dati nella tabella di SQL Server. Quindi scrivo una stored procedure che riceve solo un parametro - nome del file. Ma .. Il seguente non funziona .. Il "compilatore" si lamenta sul parametro @FileName .. Vuole solo una semplice stringa .. come 'file.txt'. Grazie in anticipo.Inserimento di massa con parametro nome file

Ilan.

BULK INSERT TblValues 
FROM @FileName 
WITH 
(
FIELDTERMINATOR =',', 
ROWTERMINATOR ='\n' 
) 
+0

Siete alla ricerca di una soluzione SQL puro, o si è in grado di utilizzare C#/VB? –

+0

Grazie Paul! Ho già trovato qualcosa http://stackoverflow.com/questions/4050790/bulk-insert-using-stored-procedure – Ilan

+0

@IIan, se hai la risposta chiudi la domanda e la prossima volta cerca SO per domande simili prima di chiedere uno. –

risposta

28

The syntax for BULK INSERT statement è:

BULK INSERT 
    [ database_name. [ schema_name ] . | schema_name. ] [ table_name | view_name ] 
     FROM 'data_file' 
    [ WITH 

Così, il nome del file deve essere una stringa costante. Per risolvere il problema si prega di utilizzare SQL dinamico:

DECLARE @sql NVARCHAR(4000) = 'BULK INSERT TblValues FROM ''' + @FileName + ''' WITH (FIELDTERMINATOR ='','', ROWTERMINATOR =''\n'')'; 
EXEC(@sql); 
+1

Proprio quello che ho fatto. Grazie! http://stackoverflow.com/questions/4050790/bulk-insert-using-stored-procedure – Ilan

+1

Che dire di SQL Injection? – user441365

Problemi correlati