L'utilità SQLCMD genera righe respinte su file flat

sqlbulkcopy sqlcmd sql-server

Domanda

Attualmente sto usando SQLCMD Utility per caricare i dati CSV su SQL Server. Di seguito è il mio comando che è stato eseguito nel prompt dei comandi per caricare i dati:

sqlcmd -Usa -Pxxx -S192.168.1.223,49546 -dlocal -i"/test.sql" -o"/test.log"

Ho anche copiato il mio contenuto del file test.sql come riferimento:

SET NOCOUNT ON 
BULK INSERT test FROM 
"\\192.168.1.223\test.csv"
WITH
(
MAXERRORS = 1000000,
CODEPAGE = 1251,
FIELDTERMINATOR = '~%',
ROWTERMINATOR = '0x0a'
)
GO
SELECT CONVERT(varchar,@@ROWCOUNT) + ' rows affected'
GO

L'operazione di inserimento sta funzionando bene con il processo di cui sopra. Ma la mia preoccupazione è che, in caso di errori dovuti al tipo di dati o alla lunghezza dei dati, la riga viene rifiutata e non riesco a tracciare la riga specifica.

Ogni volta devo controllare il file di registro per il numero di riga rifiutato e il file di dati per controllare la riga corrispondente.

C'è qualche possibilità di generare l'errore riga / rifiutata ad un altro file, come come abbiamo in ORACLE - Utility SQLPLUS per generare file danneggiato?

Risposta accettata

Penso che l'opzione che stai cercando non sia in sqlcmd, ma in BULK INSERT :

ERRORFILE = 'nome_file'

Specifica il file utilizzato per raccogliere righe che presentano errori di formattazione e non può essere convertito in un set di righe OLE DB. Queste righe vengono copiate in questo file di errore dal file di dati "così com'è".



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é