My Sql Bulk inserisce i dati caricando i dati con il troncamento

bulkinsert mysql sqlbulkcopy truncation

Domanda

Sto cercando di caricare i dati dal file CSV al database MYSql tramite l'opzione di inserimento in blocco. Qui di seguito sono elencati la sintassi della tabella e il file CSV

CREATE TABLE discounts (
    id INT NOT NULL ,
    title VARCHAR(10) NOT NULL,
    expired_date DATE NOT NULL,
    amount VARCHAR(255 ) NOT NULL

);

Formato file CSV:

"475","Back","20140401","FFFF"
"476","bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb","20140901","DDD"

Query SQL:

LOAD DATA  INFILE 'C:\Users\karthick\Desktop\data.csv' 
INTO TABLE discounts 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';

Nella sintassi della tabella create sopra ho specificato la colonna "titolo" della lunghezza dei dati su "10". Ma il valore nel file di dati per la seconda riga supera la lunghezza 10.

Quando ho eseguito la query SQL i dati vengono caricati con successo nel database MySQL e qui ci sono i risultati sottostanti e I miei valori nella seconda riga vengono troncati per il campo "titolo". Potrebbe per favore suggerire come smettere di caricare la riga senza troncarla. Inoltre dovrebbe caricare la riga successiva consecutiva senza terminare se i dati sono appropriati. Si prega di suggerire

Uscita del database:

'475', 'Back', '2014-04-01', 'FFFF'
'476', 'bbbbbbbbbb', '2014-09-01', 'DDD'

Risposta popolare

Secondo la mia comprensione, qui di seguito sono alcuni punti che si desidera raggiungere:
1) I dati non dovrebbero essere troncati se la lunghezza del titolo è maggiore della lunghezza del campo specificata come da struttura della tabella.
2) Se la lunghezza del titolo è maggiore, quel record dovrebbe essere saltato mentre si esegue un'importazione di record e il resto del processo dovrebbe continuare.

Risposta come da database mysql preso in considerazione:

Puoi usare sql_mode come TRADITIONAL (Fai in modo che MySQL si comporti come un sistema di database SQL "tradizionale". Una semplice descrizione di questa modalità è "dare un errore invece di un avvertimento" quando si inserisce un valore errato in una colonna. https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html )

Ora, dopo aver impostato questa modalità, mentre si esegue l'importazione dei record, si verificherà un errore se qualsiasi dato errato o valore fuori intervallo viene inserito nella tabella.

Nella parte successiva, per i valori fuori intervallo, non è possibile ignorare le righe di errore. È possibile controllare il collegamento alla discussione esistente: saltare le righe di errore durante il caricamento dei dati nella tabella mysql dal file delimitato

Per saltare le righe che interrompono i vincoli univoci o eventualmente creare record duplicati, possono essere saltati usando la parola chiave IGNORE insieme a LOAD DATA INFILE.

Consultare: https://dev.mysql.com/doc/refman/5.5/en/load-data.html



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow