Problema bulk insert t-sql

venerdì 06 febbraio 2009 - 12.58

augusto890 Profilo | Junior Member

Ciao ragazzi, vi spiego il mio problema. Devo recuperare i dati da più file e caricarli nel DB. solo che i file da cui attingo cambiano di giorno in giorno. e quindi devo rendere dinamico il nome del file. Ho provato a farlo. L'unico problema è che non mi accetta la stringa nella clausola from.
vi posto il codice per farvi capire meglio:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

il codice è questo. L'errore me lo da in prossimità di stringa...

Grazie in anticipo. Luca

lbenaglia Profilo | Guru

>L'unico problema è che
>non mi accetta la stringa nella clausola from.
>vi posto il codice per farvi capire meglio:
>
>set @stringa = 'c:\\inetpub\wwwroot\Group-ware\ingressi\script\'
>+ cast(replace(CONVERT(varchar,getdate(),103), '/', '.') as varchar(10))
>+ '_' + cast(@i as varchar(3)) + '.cot'
>
>
> BULK INSERT temporanea
> FROM @stringa;
>
>il codice è questo. L'errore me lo da in prossimità di stringa...

Ciao Luca,

Perché C: è seguito da un doppio backslash?
Ad ogni modo come hai tu stesso notato non è possibile parametrizzare la clausola FROM a meno di ricorrere al Dynamic SQL, ovvero componendo il comando SQL ed eseguendolo tramite EXEC o sp_executesql.
Prima però di adottare questa soluzione, valuta attentamente i rischi (di sicurezza) ai quali andrai incontro.
A titolo di esempio fai riferimento al seguente articolo di Erland:
http://www.sommarskog.se/dynamic_sql.html

>Grazie in anticipo. Luca
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

augusto890 Profilo | Junior Member

Scusami il ritardo nella risposta. Avevo già provato a a usare la sp_execute...ma mi dava sempre lo stesso errore. Sarà per il doppio // nel percorso?

Grazie, Luca

lbenaglia Profilo | Guru

>Scusami il ritardo nella risposta. Avevo già provato a a usare
>la sp_execute...ma mi dava sempre lo stesso errore. Sarà per
>il doppio // nel percorso?
Se il file è locale non ci vuole né "//" né "\\" ma semplicemente <volume>\<path>

>Grazie, Luca
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5