Come importare un file CSV nel workbench MySQL?


88

Ho un file CSV. Contiene 1,4 milioni di righe di dati, quindi non sono in grado di aprire quel file csv in Excel perché il suo limite è di circa 1 milione di righe.

Pertanto, voglio importare questo file nel workbench MySQL. Questo file CSV contiene colonne come

"Service Area Code","Phone Numbers","Preferences","Opstype","Phone Type"

Sto cercando di creare una tabella nel workbench MySQL denominata "fittizia" contenente colonne come

ServiceAreaCodes,PhoneNumbers,Preferences,Opstyp,PhoneTyp. 

Il file CSV è denominato model.csv. Il mio codice nel workbench è così:

LOAD DATA LOCAL INFILE 'model.csv' INTO TABLE test.dummy FIELDS TERMINATED BY ',' lines terminated by '\n';

ma ricevo un errore del tipo model.CSV file not found


Puoi farlo anche in dbForge Studio per l' importazione guidata di MySQL . Genera automaticamente una tabella in questo modo prnt.sc/e5iqy1
Devart

Risposte:


139

Immagino che ti manchi la clausola ENCLOSED BY

LOAD DATA LOCAL INFILE '/path/to/your/csv/file/model.csv'
INTO TABLE test.dummy FIELDS TERMINATED BY ','
ENCLOSED BY '"' LINES TERMINATED BY '\n';

E specifica il percorso completo del file CSV

Load Data Infile - Documentazione MySQL


1
grazie, non ricevo alcun errore in questo comando, ma ricevo un errore come il file model.csv non trovato. quel file è memorizzato nel desktop del mio sistema
vps

csv è archiviato nel desktop del mio sistema
vps

5
AGGIORNAMENTO: Se si importano stringhe con caratteri non standard, è utile segnalare la necessità di "SET DI CARATTERI utf8" nell'istruzione: LOAD DATA LOCAL INFILE '/path/to/file.csv' INTO TABLE nome_db.nome_tabella SET DI CARATTERI utf8 FIELDS TERMINATED BY ',' ENCLOSED BY '"' righe terminate da '\ n'; Anche la tabella / le colonne di destinazione dovrebbero essere impostate su utf-8
ılǝ

1
inoltre non bisogna dimenticare la parola chiave LOCAL, la tua query è giusta
Brij Raj Singh - MSFT

2
Ha funzionato "un po '" su Windows 7 utilizzando mysql workbench 6.2. Ho dovuto usare doppie barre '//path//to//your//csv//file//model.csv'e tutti i campi contenenti singole barre si sono interrotti.
576i

69

Nel caso in cui si disponga di set di dati più piccoli, un modo per ottenerlo tramite la GUI è:

  1. Apri una finestra di query
  2. SELEZIONA * DA [nome_tabella]
  3. Seleziona Importa dalla barra dei menu
  4. Premere Applica in basso a destra sotto la griglia dei risultati

inserisci qui la descrizione dell'immagine

Riferimento: http://www.youtube.com/watch?v=tnhJa_zYNVY


13
Solo una nota. Quell'opzione di importazione è disponibile solo su macchine Windows. I plugin apparentemente sono ancora basati su .Net, quindi non funzionano su Linux o Mac.
BrianC

8
Non dimenticare di premere Applica dopo l'importazione.
Steve Pitchers

7
Attenzione, questo può essere molto lento. Ci sono volute un paio d'ore per 25.000 file
Rob Sedgwick

2
Il periodo di tempo sembra dipendere molto dall'hardware. Il mio computer di casa si è bloccato completamente su 10.000 righe. Il mio computer di lavoro ha appena importato 243.000 righe con circa 200 colonne in 85 secondi.
KathyA.

2
@BrianC Questo sembra non essere più il caso, sembra per me nella versione Linux.
Jammerx2

21

Nel navigatore sotto SCHEMAS, fai clic con il pulsante destro del mouse sullo schema / database e seleziona "Importazione guidata dati tabella"

Funziona anche per Mac.


Questo ha funzionato per me su Ubuntu 18.04 durante la creazione di una nuova tabella da csv. Tuttavia, non sono stato in grado di aggiungere dati a una tabella esistente utilizzando questo metodo.
LP Whigley

2

Grazie :) ha risolto il mio problema. possiamo cambiare il nome della colonna più tardi dall'interfaccia utente (non per esperti), una volta importato ...
vipul kumawat

ho provato molte cose che non hanno funzionato ma alla fine ha funzionato. ha funzionato anche senza interferire con le impostazioni di file dati locali. Immagino che MySQL stia invece eseguendo gli inserti.
Peppershaker

1

Al momento non è possibile importare un CSV (utilizzando MySQL Workbench) in tutte le piattaforme, né è consigliato se detto file non risiede nello stesso host del server MySQL host.

Tuttavia, puoi usare mysqlimport .

Esempio:

mysqlimport --local --compress --user=username --password --host=hostname \
--fields-terminated-by=',' Acme sales.part_*

In questo esempio mysqlimportviene indicato di caricare tutti i file denominati "sales" con un'estensione che inizia con "part_". Questo è un modo conveniente per caricare tutti i file creati nell'esempio "diviso". Usa l'opzione --compress per ridurre al minimo il traffico di rete. L'opzione --fields-terminated-by = ',' viene utilizzata per i file CSV e l'opzione --local specifica che i dati in arrivo si trovano sul client. Senza l'opzione --local, MySQL cercherà i dati sull'host del database, quindi specifica sempre l'opzione --local.

Sono disponibili informazioni utili sull'argomento nella documentazione di AWS RDS .


0

Se il server risiede su una macchina remota, assicurati che il file si trovi nella macchina remota e non nella tua macchina locale.

Se il file si trova nella stessa macchina su cui si trova il server mysql, assicurati che l'utente mysql disponga delle autorizzazioni per leggere / scrivere il file o copia il file nella directory dello schema mysql:

Nel mio caso in Ubuntu era: /var/lib/mysql/db_myschema/myfile.csv

Inoltre, non relativo a questo problema, ma se hai problemi con le nuove righe, usa sublimeTEXT per cambiare le terminazioni di riga nel formato WINDOWS, salva il file e riprova.


0

Sembra un po 'complicato dato che mi aveva davvero infastidito per molto tempo.

Devi solo aprire la tabella (fai clic con il pulsante destro del mouse su "Seleziona righe - Limite 10000") e aprirai una nuova finestra. In questa nuova finestra troverai "icona di importazione".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.