2009-10-26 13 views
7

MySql dispone di uno strumento di riga di comando di caricamento di massa come bcp per SQLServer e sqlldr per Oracle? So che c'è un comando SQL LOAD INFILE o simile, ma a volte ho bisogno di caricare in massa un file che si trova su una scatola diversa per il database MySQL.MySql bulk load tool da riga di comando

risposta

7

mysqlimport.

utilizza gli stessi parametri di connessione della shell della riga di comando mysql. Assicurati di usare il flag -L per usare un file sul file system locale, altrimenti si supporrà (stranamente) che il file si trovi sul server.

Esiste anche una variante analoga al comando load data infile, ad esempio load data local infile, in base al quale il file verrà caricato dal client anziché dal server, il che può portare a termine ciò che si desidera fare.

+0

mysqlimport sembra quello che sto cercando, grazie. L'unica cosa che ho notato è che sembra che il nome del file debba corrispondere al nome della tabella, quindi forse "caricare dati locali" sarà più flessibile. –

+1

sì, quindi potresti aggiungere un link simbolico al file prima di importarlo. – Don

2

Penso che mysqlimport possa essere d'aiuto?

Carica tabelle da file di testo in vari formati. Il nome base del file di testo deve essere il nome della tabella da utilizzare. Se si utilizzano socket per connettersi al server MySQL, il server si aprirà e legge direttamente il file di testo. In altri casi il client aprirà il file . Il comando SQL 'LOAD DATA INFILE' viene utilizzato per importare le righe.

2
mysql -u root -p 
use database; 
source /path/yourfile.sql 

potrebbe essere quello che stai cercando, è possibile utilizzare rsync tramite ssh per transfert il 'file di massa' da una macchina all'altra.

5
LOAD DATA LOCAL INFILE 'C:\\path\\to\\windows\\file.CSV' 
INTO TABLE table_name 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
(field1, field2, field3, fieldx); 
+0

incredibilmente super veloce! –