risposta-alla-domanda-sullo-sviluppo-web-bd.com

Come importare un file SQL utilizzando 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 sul unità C, e ho provato questo comando

database_name < file.sql

Non funziona. Ottengo errori di sintassi.

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

Provare:

mysql -u username -p database_name < file.sql

Controlla Opzioni MySQL .

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

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

Note-3 Potrebbe essere necessario creare il database (vuoto) da mysql se non esiste già e l'SQL esportato non contiene CREATE DATABASE (esportato con l'opzione --no-create-db o -n), prima di poterlo importare.

2955
bansi

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

Shell> mysqldump db_name > backup-file.sql

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

UNIX

Shell> mysql db_name < backup-file.sql

Lo stesso in Windows Prompt del comando:

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;
612
vladkras

Per quanto riguarda il tempo necessario per l'importazione di file di grandi dimensioni: 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 gemma.

Hai solo bisogno di fare la seguente cosa:

mysql> use db_name;

mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;
252
Paresh Behede

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

 mysql> use db_name;
 mysql> source file_name.sql;
92
Manoj Kumar

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/directory 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 Project, puoi fare così:

~/Project ? mysql -u root -p password bank < ~/Desktop/bank.sql
60
Amrit Dhungana
  1. Apri la riga di comando di MySQL
  2. Digita il percorso della tua directory mysql bin e premi Enter
  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.sqlEnter
  7. Il tuo caricamento di file SQL è riuscito.
57
user4412947

Se si dispone già del database, utilizzare quanto segue per importare 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 sql o il file dump nel database da

mysql> source pathToYourSQLFile;

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

44

Una soluzione che ha funzionato per me è qui sotto:

Use your_database_name;
SOURCE path_to_db_sql_file_on_your_local;
40
Shiks

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
32
Tanmay Patel

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
24
Leopathu

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

zcat database_file.sql.gz | mysql -u username -p -h localhost database_name
23
Francesco Casula

Per eseguire il dump di 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
23
Adeleke Akinade
mysql --user=[user] --password=[password] [database] < news_ml_all.sql
15
user3546602

Il modo più semplice per importare nel tuo schema:

Accedi a mysql e scrivi sotto i comandi di menzione. 

mysql> use your_db_name;

mysql> source /opt/file.sql;
15
Ammad

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
13

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

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

12
Reuben

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
    
11
Pritam Chaudhari

Aggiungi l'opzione --force :

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

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.

8
Sathish D

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
7
victor

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

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

Sostituisci xampp con mamp o altri server web.

7
Giri

Mentre la maggior parte delle risposte qui menziona semplicemente il comando semplice

mysql -u database_user -p [nome_db] <database_file.sql

oggi è abbastanza comune che database e tabelle abbiano utf8-collation dove questo comando non è sufficiente . Avendo utf8-collation nelle tabelle esportate è necessario usare questo comando:

mysql -u database_user -p --default-character-set = utf8 [nome_db] <database_file.sql

Surley funziona anche per altri set di caratteri, come mostrare la giusta notazione qui:

https://dev.mysql.com/doc/refman/5.7/en/show-collation.html

Un commento menzionava anche che se un database non esiste mai prima doveva essere creato un database vuoto. Ciò potrebbe essere corretto in alcuni casi, ma dipende dal file di esportazione. Se il file esportato include già il comando per creare il database, il database non deve mai essere creato in un passaggio separato, che potrebbe persino causare un errore durante l'importazione. Quindi, durante l'importazione è consigliabile dare un'occhiata prima al file per sapere quali comandi sono inclusi lì, durante l'esportazione è consigliabile prendere nota delle impostazioni, specialmente se il file è molto grande e difficile da leggere in un editor.

Ci sono ancora più parametri per il comando che sono elencati e spiegati qui:

https://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html

Se si utilizza un'altra versione del database, prendere in considerazione la ricerca della versione corrispondente del manuale. I collegamenti citati si riferiscono a MySQL versione 5.7.

6
David
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. Per 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
6
Siva Praveen

A volte la porta definita così come il server indirizzo IP di quel database conta anche ...

mysql -u user -p user -h <Server IP> -P<port> (DBNAME) < DB.sql 
5
JohnSharath

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
5

Ai fini del backup, creare un file BAT ed eseguire questo file BAT utilizzando Utilità di pianificazione . Ci vorrà un backup del database; copia semplicemente la seguente riga e incolla in 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
5
user3728517

Analogamente a https://stackoverflow.com/a/17666285/1888983
Principali differenze 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.

4
jozxyqk

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. 

4
Paul Leclerc

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 a @ Francesco Casula 's answer btw.

4
Fery Wardiyanto

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

Passaggio 1: carica file.sql.Zip in qualsiasi directory e decomprimi lì 
Nota : Sudo apt-get install unzip: Sudo apt-get unzip file.sql.Zip
Passo 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.

4
Ramesh Sinha

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
3
ChuckCottrill

Importazione nel database: -

mysql -u nomeutente -p nome_database </ percorso file/nome_file.sql

Esportazione dalla banca dati: -

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

dopo questi comandi, Prompt chiederà la tua password mysql

3
NeeruSingh

Se si importano dati in un contenitore finestra mobile, utilizzare il seguente comando. Regola utente (-u), database (-D), porta (-P) e Host (-h) per adattarsi alla tua configurazione.

mysql -u root -D database_name -P 4406 -h localhost --protocol=tcp -p < sample_dump.sql
2
Hamfri

Se stai usando MAMP su Mac OS X, può essere utile:

/applications/MAMP/library/bin/mysql -u MYSQL_USER -p DATABASE_NAME < path/to/database_sql/FILE.sql

MYSQL_USER è root per impostazione predefinita.

1
HowardDuck

Esportare database particolari:

 djimi:> mysqldump --user=root --Host=localhost --port=3306 --password=test -B CCR KIT > ccr_kit_local.sql

Questo esporterà i database CCR e KIT ...

Importa tutti i database esportati in una particolare istanza MySQL (devi trovarti dove si trova il file di dump):

  djimi:> mysql --user=root --Host=localhost --port=3306 --password=test < ccr_kit_local.sql
1
Musa

Per importare il database tramite terminale

Passare alla cartella in cui si trova il file sql

il comando di esecuzione sotto

mysql -u database_user_name -p database_name < sql_file_name.sql

Richiederà la password. inserire la password del database. Ci vorranno alcuni secondi per importare i dati nel database.

1
Dev Semicolon

Per esempio

Ho installato il software su C:\xampp\mysql\bin E il mio file è all'indirizzo C:\Users\file.sql

Basta impostare username e database_name

Nota: Innanzitutto è necessario creare manualmente il database (database_name)

Esegui questo comando:

cd C:\xampp\mysql\bin && mysql -u username -p database_name < C:\Users\file.sql

E quindi inserire la password ???? 

1

Se la tua cartella ha più file SQL e hai installato Git Bash puoi utilizzare questo comando per importare più file:

cd /my-project/data

cat *.sql | /c/xampp/mysql/bin/mysql -u root -p 1234 myProjectDbName
1
o0omycomputero0o

Da windows è possibile utilizzare il comando di sotto per importare i dati da sql dump

C:\Programmi\MySQL\MySQL Server 5.7\bin> mysql -u <> -p <> DBName <filelocation\query.sql

dove -u seguito da username e -p seguito da password Mysql. La password può essere saltata nel comando in quanto può essere immessa su Prompt.

1
Ripudaman Singh

Puoi provare questa query.

Esportazione: Mysqldump -u username --password = your_password nome_database> file.sql

Importa: Mysql -u username --password = your_password nome_database <file.sql

e dettagli seguendo questo link:

https://chartio.com/resources/tutorials/importing-from-and-exporting-to-files-using-the-mysql-command-line/

1

Se si sta importando sul server del database locale, è possibile effettuare le seguenti operazioni:

mysql -u database_user -p < database_file.sql

Per il server di database remoto fare il follwing:

mysql -u database_user -p -h remote_server_url < database_file.sql
0

Puoi usare:

mysql -u<user> -p<pass> <db> < db.sql

esempio:

mysql -uroot -proot db < db.sql

addio!