Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
BULK IMPORT con record a lunghezza variabile
giovedì 24 gennaio 2008 - 11.04
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
gmt
Profilo
| Junior Member
98
messaggi | Data Invio:
gio 24 gen 2008 - 11:04
Salve,
ho una domanda da fare.. parliamo di SQL Server 2000/2005.. ho un file di testo da importare centinaia di migliaia di righe.. ho creato il file del formato per l'importazine con la BULK..
Il problema sta nel file da importare, nel fatto che gli ultimi campi (una ventina di formato testo) non sono valorizzati, quindi alcuni record (molti) hanno una lunghezza piu' corta..
E' possibile 'dire' alla BULK tramite il file di formato che se non trova valori alla fine deve mettere il valore predefinito del campo in tabella o NULL o quello che gli pare ?
Oppure mi devo ripassare il file di testo e 'allungare' i record tutti alla stessa lunghezza ?
Grazie in anticipo
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
gio 24 gen 2008 - 12:22
>E' possibile 'dire' alla BULK tramite il file di formato che
>se non trova valori alla fine deve mettere il valore predefinito
>del campo in tabella o NULL o quello che gli pare ?
No.
La lunghezza del tracciato record deve essere necessariamente identica per tutte le righe.
Possono esistere campi non valorizzati, ma il loro numero deve essere costante.
>Grazie in anticipo
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
gmt
Profilo
| Junior Member
98
messaggi | Data Invio:
sab 2 feb 2008 - 08:02
Non ti ringrazio perchè non era la rispostache volevo eh eh, scherzo..
Sono 300 Mb di file.. devo farmi un programmino che se lo legge e riscrive aggiungendo spazi alla fine..
Uff...
Grazie !
Ciao
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
sab 2 feb 2008 - 10:17
>Sono 300 Mb di file.. devo farmi un programmino che se lo legge
>e riscrive aggiungendo spazi alla fine..
>Uff...
Più che spazi, il numero di colonne deve essere lo stesso per tutte le righe.
La lunghezza delle colonne non è significativa.
>Grazie !
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
gmt
Profilo
| Junior Member
98
messaggi | Data Invio:
mar 5 feb 2008 - 09:35
Si certo.. gli ultimi 10 campi sono 10 campi char(1).. a volte non valorizzati ma senza neanche un valore..
quindi la riga risulta piu' corta..
Parliamo di una banca.. figurati.. se l'export me lo faceva un ragazzino tanto lo avrebbe previsto..
Poveri i nostri soldi nei C/C..
Ciao
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 5 feb 2008 - 09:37
>Si certo.. gli ultimi 10 campi sono 10 campi char(1).. a volte
>non valorizzati ma senza neanche un valore..
>quindi la riga risulta piu' corta..
Dipende, supponendo che il separatore di colonna sia il ";" è sufficiente che ci siano 10 ";":
col1;col2;;;;;;;;;;;
>Parliamo di una banca.. figurati.. se l'export me lo faceva un
>ragazzino tanto lo avrebbe previsto..
>Poveri i nostri soldi nei C/C..
Ho lavorato alcuni anni in ambito bancario e so bene come funzionano certe cose
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
gmt
Profilo
| Junior Member
98
messaggi | Data Invio:
ven 8 feb 2008 - 15:02
No è posizionale senza separatori..
Ora ho questo problema... sepro che S. Benaglia mi aiuti..
All'interno del flusso dati da importare ho ad esempio:
GIUSEPPE0155ANTONIO
I primi 8 caratteri sono il cognome..
poi 4 caratteri un valore
Poi il nome
Nel file format ho messo
1 SQLCHAR 1 8 "" 1 cognome Latin1_General_CI_AS
2 SQLCHAR 1 4 "" 2 valore Latin1_General_CI_AS
3 SQLCHAR 1 8 "" 3 nome Latin1_General_CI_AS
...
in realtà il campo valore è un numeric(3,1) perciò nella tabella devo avere 15,5..
Io mi ritrovo 155..
Come posso fare?
Sto impazzendo..
Grazie
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
sab 9 feb 2008 - 13:48
>No è posizionale senza separatori..
Allora se le colonne sono a lunghezza fissa occorre che le righe abbiano esattamente la stessa lughezza.
>in realtà il campo valore è un numeric(3,1) perciò nella tabella
>devo avere 15,5..
>Io mi ritrovo 155..
>Come posso fare?
Puoi fare ben poco.
Se la colonna è numeric(3,1) e tu vuoi valorizzarla con 155 otterrai una bella eccezione di overflow.
Se nel file sorgente non hai il punto come separatore decimale, SQL Server non se lo può inventare.
>Grazie
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
gmt
Profilo
| Junior Member
98
messaggi | Data Invio:
sab 9 feb 2008 - 15:00
infatti sone le esportazioni dei sistemi del cavolo. Infatti mi sono fatto un programma in .NET che si passa il file.. lo allunga e mette i punti..
Raga! Controllate bene i vostri C/C !!
Ciao
Torna su
Stanze Forum
Elenco Threads
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 !