Questione : Copia all'ingrosso di SQL - importare la lima di CSV e comparire di valori nulli

Ogni mese produciamo un foglio elettronico dei numeri di cliente e di altre informazioni di cliente che sono procedati con un'applicazione sola del basamento di vb.net e sono importati in una base di dati di SQL. Fino a questo mese, non abbiamo avuti edizioni con questo processo dell'importazione. Tuttavia, è stato notato questo mese che quando il numero di cliente è passato 20xxxxxxxx che ha importato dentro mentre una POSIZIONE DI SEGNALE MINIMO anziché con il cliente number.

Originally I ha pensato esso era un tipo di dati edizione. Originale ho fatto il campo di numero di cliente installare come numerico (18.0).  Allora ho provato il int, ma ancora ho avuto l'edizione. Ho provato Varchar (50) ed ancora ho avuto l'edizione. Inoltre allora ho controllato i mesi precedenti e veduto dove i numeri di cliente maggiori di 20xxxxxxxx sono venuto perfettamente nell'indennità. In modo che elimini un tipo di dati edizione per quanto sono differenza di concerned.

The soltanto questo mese sia il nostro foglio elettronico si sviluppi molto e siamo fino a 676 annotazioni. È alla 169th annotazione che il numero di ultimo cliente compare e la 170th annotazione è quando annulla cominciano a comparire. Tuttavia, il resto dei campi per le annotazioni oltre 170 viene nell'indennità. È appena il numero di cliente field.

I ha trovato un certo alberino su un altro luogo, quello accennato circa la copia all'ingrosso che non funziona per le più grandi lime di .csv e quello annulla a caso sarebbe importato piuttosto che il valore. Naturalmente, ora non posso trovare l'alberino per riferirlo qui. Non ci era risposta valida reale all'edizione della persona che io ha trovato useful.

Finally alla domanda, se usando SQLBulkCopy presenta le limitazioni rispetto ad importare le lime di .csv, che cosa è un altro metodo per ottenere questo foglio elettronico importato correttamente nella Tabella di SQL? O è ci qualcosa che manchi nel mio codice che risolverebbe questo problema? la funzione ImportCSVBulk (ByVal SQLTableName come stringa, ByVal CSVFile come stringa, ByVal SheetName del

Public come stringa) mentre Boolean
'genera lo strings
CSVConnString fioco del collegamento come sqlConnString fioco di BuildCSVConnString = della stringa (CSVFile) .ToString
come stringa = BuildSQLConnString.ToString

'ha installato il connection
Using CSVConn mentre nuova messa a punto del
'il object
di ordine di CSV oscura CSVCmd mentre il nuovo
di Odbc.OdbcCommand (“selezionare * da„ & SheetName & “.csv„, CSVConn) 'apre il
del connection
CSVConn.Open di Excel () 'installare che il DataReader
CSVRead fioco come Odbc.OdbcDataReader = CSVCmd.ExecuteReader
'di Odbc.OdbcConnection (CSVConnString) lo SQLBulkCopy
Using bulkCopy mentre il nuovo
di SqlBulkCopy (sqlConnString) 'ha regolato il table
bulkCopy.DestinationTableName = SQLTableName
Try
'redige i dati al fermo di ritorno del
'Success
True
del server
bulkCopy.WriteToServer (CSVRead) ex mentre il
'Error
False
Finally
'di Exception
MsgBox (Err.Number &„ “& Err.Description) vicino l'estremità di Try
di conclusione di If
di conclusione del
di DataReader
se non CSVRead.IsClosed Then
CSVRead.Close () Using 'l'estremità del bulkCopy
dell'estremità Using 'l'estremità Function

Let di CSVConn
di conclusione me sa se collegamenti del foglio elettronico ed o alla tabella aiuterebbe. Non posso inviare le informazioni reali, ma posso dargli un campione del layout.

Thanks in anticipo per tutto l'aiuto che potete provide.



class= del

Risposta : Copia all'ingrosso di SQL - importare la lima di CSV e comparire di valori nulli

Alcune cose da provare:

1. Aprire la lima di CSV in blocchetto per appunti piuttosto Excel e vedere se ci è qualche cosa sconosciuto in quelle linee. Excel applicherà la formattazione che può nascondere l'edizione.

2. Tagliare che i dati giù a Th 20xxxx allineano ed importano appena quello e si assicurano che siano di fare con quello (piuttosto che la linea numero)


Ci sono molti metodi alternativi ad importare le lime di CSV.

BCP.EXE (una linea di ordine attrezzo che viene con l'assistente di SQL)
INSERTO ALL'INGROSSO (una dichiarazione di T-SQL che è essenzialmente lo stesso asBCP salvo che voi lo fa funzionare dall'interno dell'assistente di SQL
SSIS (servizi di integrazione di SQL - un attrezzo di ETL che è probabilmente sopra la parte superiore a questo fine)

Ci sono tre cose inutili che attualmente stanno aggiungendo alle edizioni possibili:

1. Una lima di CSV è una lima di testo diritta. Non è necessario da aprirla in Excel O da usare un collegamento di ODNC per aprirlo.
2. A di lancio. La rete app nella miscela aggiunge al numero delle cose che possono andare male.

Se sterà facendola userei appena BCP.EXE per caricarlo (comunque può essere una punta di un dolore per installare la prima volta)
Altre soluzioni  
 
programming4us programming4us