Jak zaimportować plik SQL za pomocą wiersza poleceń w MySQL?

Mam plik .sql z eksportem z phpMyAdmin. Chcę zaimportować go do innego serwera za pomocą wiersza poleceń.

MamWindows Server 2008 R2 instalacja. Umieściłem plik .sql na napęd C, i próbowałem tego polecenia

database_name < file.sql

To nie działa dostaję błędy składni.

  • Jak mogę zaimportować ten plik bez problemu?
  • Czy muszę najpierw utworzyć bazę danych?
Author: DineshDB, 2013-07-16

30 answers

Spróbuj:

mysql -u username -p database_name < file.sql

Sprawdź Opcje MySQL .

Notatka-1: lepiej jest użyć pełnej ścieżki pliku SQL file.sql.

Uwaga-2: Użyj -R i --triggers, Aby zachować procedury i wyzwalacze oryginalnej bazy danych. Domyślnie nie są kopiowane.

 2698
Author: bansi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-18 09:50:24

Powszechnym zastosowaniem mysqldump jest tworzenie kopii zapasowej całej bazy danych:

shell> mysqldump db_name > backup-file.sql

Możesz załadować plik zrzutu z powrotem na serwer w następujący sposób:

UNIX

shell> mysql db_name < backup-file.sql

To samo w Windows wiersz polecenia:

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

PowerShell

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

MySQL command line

mysql> use db_name;
mysql> source backup-file.sql;
 549
Author: vladkras,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-27 17:54:04

Jeśli chodzi o czas potrzebny na importowanie dużych plików: co najważniejsze, zajmuje to więcej czasu, ponieważ domyślnym ustawieniem MySQL jest autocommit = true. Musisz to ustawić przed zaimportowaniem pliku, a następnie sprawdzić, jak import działa jak klejnot.

Musisz tylko zrobić następujące rzeczy:

mysql> use db_name;

mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;
 227
Author: Paresh Behede,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-13 14:53:45

Spośród wszystkich odpowiedzi na powyższy problem, ta jest najlepsza:

 mysql> use db_name;
 mysql> source file_name.sql;
 80
Author: Manoj Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-18 12:12:06

Możemy użyć tego polecenia do zaimportowania SQL z linii poleceń:

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

Na przykład, jeśli nazwa użytkownika to root, A hasło to password. I masz Nazwę bazy danych jako bank, a plik SQL to bank.sql. Następnie po prostu zrób tak:

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

Pamiętaj, gdzie jest Twój plik SQL. Jeśli Twój plik SQL znajduje się w folderze/katalogu Desktop, przejdź do katalogu desktop i wprowadź polecenie w następujący sposób:

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

I jeśli twoje są w katalogu Project, a Twój plik SQL znajduje się w Desktop katalog. Jeśli chcesz uzyskać do niego dostęp z katalogu Project, możesz zrobić tak:

~/Project ? mysql -u root -p password bank < ~/Desktop/bank.sql
 53
Author: Amrit Dhungana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-19 17:51:30
  1. Otwórz wiersz poleceń MySQL
  2. wpisz ścieżkę do katalogu mysql bin i naciśnij Enter
  3. wklej swój plik SQL do folderu bin serwera mysql.
  4. Utwórz bazę danych w MySQL.
  5. Użyj tej konkretnej bazy danych, do której chcesz zaimportować plik SQL.
  6. wpisz source databasefilename.sql i wpisz
  7. Twój plik SQL przesłany pomyślnie.
 48
Author: user4412947,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-19 18:10:20

Jeśli posiadasz już bazę danych, użyj poniższej opcji, aby zaimportować plik dump lub sql

mysql -u username -p database_name < file.sql

Jeśli nie musisz utworzyć odpowiedniej bazy danych (pustej) w MySQL, aby najpierw zalogować się do konsoli MySQL, uruchamiając następujące polecenie w terminalu lub w cmd

mysql -u userName -p;

I po wyświetleniu monitu podaj hasło.

Następnie utwórz bazę danych i użyj jej

mysql>create database yourDatabaseName;
mysql>use yourDatabaseName;

Następnie zaimportuj plik sql lub dump do bazy danych od

mysql> source pathToYourSQLFile;

Uwaga: Jeśli twój terminal nie znajduje się w miejscu, w którym istnieje plik dump lub sql, użyj ścieżki względnej podanej powyżej.

 38
Author: Kasun Siyambalapitiya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-12 07:01:56

Rozwiązanie, które zadziałało dla mnie jest poniżej:

Use your_database_name;
SOURCE path_to_db_sql_file_on_your_local;
 37
Author: Shiks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-21 18:31:18

Przejdź do katalogu, w którym masz plik wykonywalny MySQL. -u dla nazwy użytkownika i -p aby poprosić o hasło:

C:\xampp\mysql\bin>mysql -u username -ppassword databasename < C:\file.sql
 29
Author: Tanmay Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-19 17:57:36

Aby zaimportować pojedynczą bazę danych, użyj następującego polecenia.

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

Aby zaimportować wiele zrzutów bazy danych, użyj następującego polecenia.

mysql -u username -p password < dump.sql
 22
Author: Leopathu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-08 17:50:53

Aby zrzut bazy danych do pliku SQL użyj następującego polecenia

mysqldump -u username -p database_name > database_name.sql

Aby zaimportować plik SQL do bazy danych (upewnij się, że znajdujesz się w tym samym katalogu co plik SQL lub podaj pełną ścieżkę do pliku)

mysql u -username -p database_name < database_name.sql
 18
Author: Adeleke Akinade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-04 17:42:50

Myślę, że warto wspomnieć, że możesz również załadować plik gzipped (compressed) za pomocą zcat Jak pokazano poniżej:

zcat database_file.sql.gz | mysql -u username -p -h localhost database_name
 18
Author: Francesco Casula,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-01 10:55:38
mysql --user=[user] --password=[password] [database] < news_ml_all.sql
 14
Author: user3546602,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-08 14:09:16

Do importowania wielu plików SQL w tym samym czasie, użyj tego:

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

Do prostego importowania:

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

Dla WAMP :

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

Dla XAMPP:

C:\xampp\mysql\bin\mysql -u root -pPassword DataBase < data.sql
 12
Author: Abdul Rehman Janjua,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-21 18:32:30

Nie musisz podawać nazwy bazy danych w wierszu poleceń, jeśliplik sql zawiera polecenia CREATE DATABASE IF NOT EXISTS db_name i USE db_name.

Po prostu upewnij się, że łączysz się z użytkownikiem, który ma uprawnienia do tworzenia bazy danych, jeśli baza danych wymieniona w .plik sql nie istnieje.

 10
Author: Reuben,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-02 09:37:39

Importuj bazę danych

  1. Przejdź do napędu:

    command: d:
    
  2. MySQL login

    command: c:\xampp\mysql\bin\mysql -u root -p
    
  3. Poprosi o pwd. Wpisz go:

    pwd
    
  4. Wybierz bazę danych

    use DbName;
    
  5. Podaj nazwę pliku

    \.DbName.sql
    
 10
Author: Pritam Chaudhari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-02 09:41:33

Dodaj --force Opcja :

mysql -u username -p database_name --force < file.sql
 8
Author: ktaria,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-02 09:40:03

Pomyślałem, że może być przydatny dla tych, którzy używają Mac OS X :

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

Zastąp xampp na mamp lub inne serwery www.

 7
Author: Giri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-19 17:58:53

Poniższe polecenie działa dla mnie z linii poleceń (cmd) na Windows 7 na WAMP .

d:/wamp/bin/mysql/mysql5.6.17/bin/mysql.exe -u root -p db_name < database.sql
 7
Author: victor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-19 18:14:22

Przejdź do katalogu, w którym masz MySQL.

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

Aby zrzucić wszystkie bazy danych, użyj opcji -all-databases i nie trzeba już podawać nazwy baz danych.

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

Lub możesz użyć niektórych klientów GUI, takich jak SQLyog, aby to zrobić.

 6
Author: Sathish D,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-19 17:49:09

Czasami liczy się również zdefiniowany port oraz adres IP serwera tej bazy danych...

mysql -u user -p user -h <Server IP> -P<port> (DBNAME) < DB.sql 
 5
Author: JohnSharath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-19 17:53:28

Do celów tworzenia kopii zapasowych, Utwórz plik BAT i uruchom go za pomocą Harmonogramu zadań . To zajmie kopię zapasową bazy danych; wystarczy skopiować następujący wiersz i wkleić Notatnik, a następnie zapisać .plik bat i uruchom go w systemie.

@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
Author: user3728517,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-19 17:56:39

Ciągle natykałem się na problem, w którym baza danych nie została utworzona.

I fixed it like this

mysql -u root -e "CREATE DATABASE db_name"
mysql db_name --force < import_script.sql
 5
Author: David Silva Smith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-11 05:02:36

Dla informacji miałem właśnie domyślny root + withoutpassword, nie działa ze wszystkimi powyższymi odpowiedziami.

  • Utworzyłem nowego Użytkownika z wszystkimi uprawnieniami i hasłem. To działa.

  • -ppassword bez miejsca.

 4
Author: Paul Leclerc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-29 14:40:42

Używam Windows 10 z Powershell 5 i znalazłem prawie wszystkie "uniksowe" rozwiązania nie działają dla mnie.

> 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

Kończę używając tego polecenia.

> type my-database.sql | mysql -u[username] -h[localhost] -p [database-name]
I działa idealnie, mam nadzieję, że pomoże.

Dzięki @Francesco Casula ' S odpowiedz btw.

 4
Author: Fery Wardiyanto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:37

Podobnie jak https://stackoverflow.com/a/17666285/1888983
Najważniejsze dla mnie różnice:

  1. baza danych musi istnieć najpierw
  2. Brak spacji pomiędzy -p A hasłem

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

Uruchamianie Fedory 26 z MariaDB.

 4
Author: jozxyqk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-08 19:30:03
mysql -u root -p password -D database_name << import.sql

Użyj pomocy mysql dla szczegółów mysql --help

Myślę, że będą to przydatne opcje w naszym kontekście

[~]$ 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.

Co jest zabawne, jeśli importujemy dużą bazę danych i nie mamy paska postępu. Użyj Pipe Viewer i zobacz transfer danych przez pipe

Dla Komputerów Mac, brew install pv .Dla Debiana / Ubuntu, apt-get install pv. Inne, zobacz 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
 4
Author: Siva Praveen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-18 18:40:09

Podczas gdy większość odpowiedzi tutaj wspomina tylko o prostym poleceniu

Mysql-u database_user -p [db_name]

Dzisiaj jest dość powszechne, że bazy danych i tabele mają utf8-collation, gdzie to polecenie nie jest wystarczające. Po zestawianiu utf8 w wyeksportowanych tabelach wymagane jest użycie tego polecenia:

Mysql-u database_user-p --default-character-set=utf8 [db_name]

Surley to działa dla inne znaki również, jak pokazać właściwą notację można zobaczyć tutaj:

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

W jednym komentarzu wspomniano również, że jeśli baza danych nigdy nie istnieje, pusta baza danych musi być utworzona jako pierwsza. W niektórych przypadkach może to być właściwe, ale zależy od Pliku eksportowego. Jeśli wyeksportowany plik zawiera już polecenie utworzenia bazy danych, to baza danych nigdy nie musi być utworzona w oddzielnym kroku, co nawet może powoduje błąd podczas importu. Tak więc przy imporcie zaleca się najpierw zajrzeć do pliku, aby wiedzieć, które polecenia są tam zawarte, przy eksporcie zaleca się zanotować ustawienia, zwłaszcza jeśli plik jest bardzo duży i trudny do odczytania w edytorze.

Jest jeszcze więcej parametrów dla polecenia, które są wymienione i wyjaśnione tutaj:

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

Jeśli korzystasz z innej bazy danych-Wersja rozważ wyszukiwanie odpowiedniej wersji podręcznika. Wymienione linki odnoszą się do MySQL w wersji 5.7.

 4
Author: David,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-07 18:11:40

Poniższe kroki pomagają w załadowaniu file.sql do bazy danych MySQL.

Krok 1: wgraj file.sql.zip do dowolnego katalogu i rozpakuj tam
uwaga : sudo apt-get install unzip : sudo apt-get unzip file.sql.zip
Krok 2: Teraz przejdź do tego katalogu. Przykład: cd /var/www/html

Krok 3: mysql -u username -p database-name < file.sql
Wprowadź hasło i poczekaj, aż przesyłanie zostanie zakończone.

 3
Author: Ramesh Sinha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-19 18:12:24

Podanie danych uwierzytelniających w wierszu poleceń nie jest dobrym pomysłem. Powyższe odpowiedzi są świetne, ale zaniedbać wspomnieć

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

Gdzie etc / myhost.cnf jest plikiem zawierającym hosta, użytkownika, hasło i unikasz ujawniania hasła w wierszu poleceń. Oto przykład,

[client]
host=hostname.domainname
user=dbusername
password=dbpassword
 3
Author: ChuckCottrill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-25 01:18:48