Come importare un file SQL usando la riga di comando in MySQL?

Ho un file .sql con un’esportazione da phpMyAdmin . Voglio importarlo in un altro server usando la riga di comando.

Ho un’installazione di Windows Server 2008 R2. Ho inserito il file .sql C e ho provato questo comando

 database_name < file.sql 

Non funziona. Ottengo errori di syntax.

  • Come posso importare questo file senza problemi?
  • Devo prima creare un database?

Provare:

 mysql -u username -p database_name < file.sql 

Controlla le opzioni MySQL .

Nota 1: è preferibile utilizzare il percorso completo del file SQL file.sql .

Nota 2: utilizzare -R e --triggers per mantenere le routine e i trigger del database originale. Non vengono copiati di default.

Un uso comune di mysqldump è per fare un backup di un intero database:

 shell> mysqldump db_name > backup-file.sql 

È ansible caricare nuovamente il file di dump nel server in questo modo:

UNIX

 shell> mysql db_name < backup-file.sql 

Lo stesso nel prompt dei comandi di Windows :

 mysql -p -u [user] [database] < backup-file.sql 

PowerShell

 C:\> cmd.exe /c "mysql -u root -p db_name < backup-file.sql" 

Riga di comando MySQL

 mysql> use db_name; mysql> source backup-file.sql; 

Per quanto riguarda il tempo necessario per l’importazione di file enormi: la cosa più importante è che richiede più tempo perché l’impostazione predefinita di MySQL è autocommit = true . È necessario impostarlo prima di importare il file e quindi verificare come l’importazione funzioni come una gem.

Hai solo bisogno di fare la seguente cosa:

 mysql> use db_name; mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ; 

Tra tutte le risposte, per il problema sopra, questo è il migliore:

  mysql> use db_name; mysql> source file_name.sql; 

Possiamo usare questo comando per importare SQL dalla riga di comando:

 mysql -u username -p password db_name < file.sql 

Ad esempio, se il nome utente è root e la password è password . E hai un nome di database come bank e il file SQL è bank.sql . Quindi, fai semplicemente così:

 mysql -u root -p password bank < bank.sql 

Ricorda dove si trova il tuo file SQL. Se il tuo file SQL si trova nella cartella / cartella Desktop vai alla directory desktop e inserisci il comando in questo modo:

 ~ ? cd Desktop ~/Desktop ? mysql -u root -p password bank < bank.sql 

E se sei nella directory Project e il tuo file SQL è nella directory Desktop . Se vuoi accedervi dalla directory del Project , puoi fare così:

 ~/Project ? mysql -u root -p password bank < ~/Desktop/bank.sql 
  1. Apri la riga di comando di MySQL
  2. Digita il percorso della tua directory mysql bin e premi Invio
  3. Incolla il tuo file SQL all’interno della cartella bin del server mysql.
  4. Crea un database in MySQL.
  5. Utilizzare quel particolare database in cui si desidera importare il file SQL.
  6. Digitare source databasefilename.sql e Invio
  7. Il tuo caricamento di file SQL con successo.

Se si dispone già del database, utilizzare quanto segue per importare il dump o il file sql

 mysql -u username -p database_name < file.sql 

se non è necessario creare il database pertinente (vuoto) in MySQL, per il primo accesso alla console MySQL eseguendo il seguente comando nel terminale o in cmd

 mysql -u userName -p; 

e quando richiesto fornire la password.

Quindi crea un database e usalo

 mysql>create database yourDatabaseName; mysql>use yourDatabaseName; 

Quindi importare il file sql o dump nel database da

 mysql> source pathToYourSQLFile; 

Nota: se il terminale non si trova nel percorso in cui è presente il dump o il file sql , utilizzare il percorso relativo in alto.

Una soluzione che ha funzionato per me è qui sotto:

 Use your_database_name; SOURCE path_to_db_sql_file_on_your_local; 

Vai alla directory in cui hai l’eseguibile MySQL. -u per username e -p per richiedere la password:

 C:\xampp\mysql\bin>mysql -u username -ppassword databasename < C:\file.sql 

Per importare un singolo database, utilizzare il seguente comando.

 mysql -u username -p password dbname < dump.sql 

Per importare più dump di database, utilizzare il seguente comando.

 mysql -u username -p password < dump.sql 

Per scaricare un database in un file SQL, utilizzare il seguente comando

 mysqldump -u username -p database_name > database_name.sql 

Per importare un file SQL in un database (assicurarsi di essere nella stessa directory del file SQL o fornire il percorso completo del file)

 mysql u -username -p database_name < database_name.sql 

Penso che valga la pena ricordare che puoi caricare anche un file compresso con zcat con zcat come mostrato di seguito:

 zcat database_file.sql.gz | mysql -u username -p -h localhost database_name 
 mysql --user=[user] --password=[password] [database] < news_ml_all.sql 

Non è necessario specificare il nome del database sulla riga di comando se il file .sql contiene CREATE DATABASE IF NOT EXISTS db_name e USE db_name statements.

Assicurati solo di connetterti con un utente che ha le autorizzazioni per creare il database, se il database menzionato nel file .sql non esiste.

Per importare più file SQL contemporaneamente, usa questo:

 # Unix-based solution for i in *.sql;do mysql -u root -pPassword DataBase < $i;done 

Per l'importazione semplice:

 # Unix-based solution mysql -u root -pPassword DataBase < data.sql 

Per WAMP :

 #mysqlVersion replace with your own version C:\wamp\bin\mysql\mysqlVersion\bin\mysql.exe -u root -pPassword DataBase < data.sql 

Per XAMPP:

 C:\xampp\mysql\bin\mysql -u root -pPassword DataBase < data.sql 

Aggiungi l’ opzione --force :

 mysql -u username -p database_name --force < file.sql 

Importa un database

  1. Vai a guidare:

     command: d: 
  2. Login MySQL

     command: c:\xampp\mysql\bin\mysql -u root -p 
  3. Chiederà il pwd. Inseriscilo:

     pwd 
  4. Seleziona il database

     use DbName; 
  5. Fornire il nome del file

     \.DbName.sql 

Ho pensato che potesse essere utile per coloro che utilizzano Mac OS X :

 /Applications/xampp/xamppfiles/bin/mysql -u root -p database < database.sql 

Sostituisci xampp con mamp o altri server web.

Il seguente comando funziona per me dalla riga di comando (cmd) su Windows 7 su WAMP .

 d:/wamp/bin/mysql/mysql5.6.17/bin/mysql.exe -u root -p db_name < database.sql 

Vai alla directory in cui hai MySQL.

  c:\mysql\bin\> mysql -u username -p password database_name < filename.sql 

Inoltre, per scaricare tutti i database, utilizzare l'opzione -all-databases e non è necessario specificare più il nome dei database.

 mysqldump -u username -ppassword –all-databases > dump.sql 

Oppure puoi usare alcuni client della GUI come SQLyog per farlo.

Ai fini del backup, creare un file BAT ed eseguire questo file BAT utilizzando l’ Utilità di pianificazione . Ci vorrà un backup del database; copia semplicemente la seguente riga e incolla il blocco note, quindi salva il file .bat ed eseguilo sul tuo sistema.

 @echo off for /f "tokens=1" %%i in ('date /t') do set DATE_DOW=%%i for /f "tokens=2" %%i in ('date /t') do set DATE_DAY=%%i for /f %%i in ('echo %date_day:/=-%') do set DATE_DAY=%%i for /f %%i in ('time /t') do set DATE_TIME=%%i for /f %%i in ('echo %date_time::=-%') do set DATE_TIME=%%i "C:\Program Files\MySQL\mysql server 5.5\bin\mysqldump" -u username -ppassword mysql>C:/%DATE_DAY%_%DATE_TIME%_database.sql 

A volte la porta definita così come l’ indirizzo IP del server di quel database conta anche …

 mysql -u user -p user -h  -P (DBNAME) < DB.sql 

Ho continuato a correre nel problema in cui il database non è stato creato.

L’ho risolto così

 mysql -u root -e "CREATE DATABASE db_name" mysql db_name --force < import_script.sql 

Per informazione ho appena avuto il root predefinito + senza password, non ha funzionato con tutte le risposte di cui sopra.

  • Ho creato un nuovo utente con tutti i privilegi e una password. Funziona.

  • -ipassword SENZA SPAZIO.

 mysql -u root -p password -D database_name < < import.sql 

Usa la guida di mysql per i dettagli mysql --help

Penso che queste saranno opzioni utili nel nostro contesto

 [~]$ mysql --help mysql Ver 14.14 Distrib 5.7.20, for osx10.12 (x86_64) using EditLine wrapper Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. Usage: mysql [OPTIONS] [database] -?, --help Display this help and exit. -I, --help Synonym for -? --bind-address=name IP address to bind to. -D, --database=name Database to use. --delimiter=name Delimiter to be used. --default-character-set=name Set the default character set. -f, --force Continue even if we get an SQL error. -p, --password[=name] Password to use when connecting to server. -h, --host=name Connect to host. -P, --port=# Port number to use for connection or 0 for default to, in order of preference, my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default (3306). --protocol=name The protocol to use for connection (tcp, socket, pipe, -s, --silent Be more silent. Print results with a tab as separator, each row on new line. -v, --verbose Write more. (-v -v -v gives the table output format). -V, --version Output version information and exit. -w, --wait Wait and retry if connection is down. 

ciò che è divertente, se stiamo importando un grande database e non avendo una barra di avanzamento. Usa Pipe Viewer e vedi il trasferimento dei dati attraverso la pipe

Per Mac, brew install pv Debian / Ubuntu, apt-get install pv . Altri, consultare http://www.ivarch.com/programs/pv.shtml

 pv import.sql | mysql -u root -p password -D database_name 1.45GiB 1:50:07 [339.0KiB/s] [=============> ] 14% ETA 11:09:36 1.46GiB 1:50:14 [ 246KiB/s] [=============> ] 14% ETA 11:09:15 1.47GiB 1:53:00 [ 385KiB/s] [=============> ] 14% ETA 11:05:36 

I seguenti passaggi aiutano a caricare file.sql nel database MySQL.

Passaggio 1: file.sql.zip in qualsiasi directory e decomprimi lì
Nota : sudo apt-get install unzip : sudo apt-get unzip file.sql.zip
Passaggio 2: ora vai a quella directory. Esempio: cd /var/www/html

Passaggio 3: mysql -u username -p database-name < file.sql
Inserisci la password e attendi fino al termine del caricamento.

Fornire credenziali sulla riga di comando non è una buona idea. Le risposte di cui sopra sono grandiose, ma trascurate di menzionare

 mysql --defaults-extra-file=etc/myhost.cnf database_name < file.sql 

Dove etc / myhost.cnf è un file che contiene host, utente, password ed evita di esporre la password sulla riga di comando. Ecco un esempio,

 [client] host=hostname.domainname user=dbusername password=dbpassword 

Sto usando Windows 10 con Powershell 5 e ho trovato quasi tutte le soluzioni “unix-like” che non funzionano per me.

 > mysql -u[username] [database-name] < my-database.sql At line:1 char:31 + mysql -u[username] [database-name] < my-database.sql + ~ The '<' operator is reserved for future use. + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : RedirectionNotSupported 

Finisco per usare questo comando.

 > type my-database.sql | mysql -u[username] -h[localhost] -p [database-name] 

e funziona perfettamente, speriamo che aiuti.

Grazie alla @ risposta di Francesco Casula btw.

Analogamente a https://stackoverflow.com/a/17666285/1888983
Differenze fondamentali per me:

  1. Il database deve esistere per primo
  2. Nessuno spazio tra -p e la password

 shell> mysql -u root -ppassword #note: no space between -p and password mysql> CREATE DATABASE databasename; mysql> using databasename; mysql> source /path/to/backup.sql 

Esecuzione di fedora 26 con MariaDB.

Importazione nel database: –

mysql -u nomeutente -p nome_database

Esportazione dal database: –

mysqldump -u nomeutente -p nome_database> / percorso file / nome_file.sql

dopo questi comandi prompt chiederà la tua password mysql