2011-12-15 9 views
5

Sto caricando i dati da file di testo in tabella MySQL utilizzando query seguente:linee di errore di salto, mentre il caricamento dei dati alla tabella di MySQL da file delimitato

LOAD DATA INFILE "myFile.csv" 
INTO TABLE some_table 
COLUMNS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
ESCAPED BY '\\' 
LINES TERMINATED BY '\n' (admin,consumer); 

Ma quando il mio file contiene alcune linee di errore non è salto in grado che linea e l'intero processo si ferma in quel luogo. Voglio dire, se il mio formato di file come:

 
---------- 
sankr : kumar 
---------- 
ramesh:rao 
---------- 
new users add here 
---------- 
sri : vennla 
---------- 
anu : bhavya 
---------- 

devo caricare saltando la linea "nuovi utenti aggiungere qui". Come può fare questo?

risposta

-2

Non è possibile saltare le righe all'interno dei dati utilizzando LOAD DATA INFILE.

Basta eliminare il record in seguito utilizzando una query separata.

DELETE FROM table WHERE column = "new users add here"; 
+0

Il mio file contiene una riga di errore, quindi la mia query genererà un errore durante il caricamento e non caricherà nulla sul database. La sua fermata arresta. Qualunque modo alternativo per raggiungere questo obiettivo? – sankar

+0

@sankar che errore stai ottenendo? –

+0

"ERRORE 1261 (01000): la riga 73 non contiene dati per tutte le colonne." Non sta caricando anche una sola riga nel database. – sankar

2

La parola chiave che stai cercando è IGNORE.

Come in:

LOAD DATA INFILE "myFile.csv" IGNORE 
INTO TABLE some_table 
COLUMNS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
ESCAPED BY '\\' 
LINES TERMINATED BY '\n' (admin,consumer); 
+2

Sei sicuro? Dalla documentazione di mysql http://dev.mysql.com/doc/refman/5.5/en/load-data.html "IGNORE" significa ignorare le righe che hanno una chiave primaria duplicata con una riga esistente. – hellojinjie

+0

Hm. Lo vedo, ma ha funzionato per me. Non riesco a ricordare da dove l'ho preso. Posso verificare in seguito per vedere se ignora tutti gli errori o semplicemente duplicare gli errori delle chiavi. – Dylan

+0

Non funziona, non è una soluzione –

1

ho scoperto che i dati carico locale INFILE 'filename' SOSTITUIRE sarebbe smettere dopo un errore di formato di dati (data illegale), ma LOAD DATA LOCAL INFILE 'filename' e CARICAMENTO DATI LOCALE INFILE 'nomefile' IGNORE continua.

Questo è contrario alla documentazione MySql (versione 5.0) per quanto posso dire.

Problemi correlati