MySQL에서 명령 줄을 사용하여 SQL 파일을 가져 오는 방법은 무엇입니까?


14 Answers

mysqldump 의 일반적인 사용법은 전체 데이터베이스의 백업을 만드는 것이다 :

shell> mysqldump db_name > backup-file.sql

다음과 같이 덤프 파일을 다시 서버에로드 할 수 있습니다.

유닉스

shell> mysql db_name < backup-file.sql

Windows 명령 프롬프트에서도 동일합니다.

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

PowerShell

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

MySQL 커맨드 라인

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

phpMyAdmin 에서 가져온 .sql 파일을 가지고 있습니다. 명령 줄을 사용하여 다른 서버로 가져 오려고합니다.

Windows Server 2008 R2 설치가 있습니다. .sql 파일을 C 드라이브 에 넣었습니다.이 명령을 시도했습니다.

database_name < file.sql

그것은 구문 오류가 작동하지 않습니다.

  • 문제없이이 파일을 어떻게 가져올 수 있습니까?
  • 먼저 데이터베이스를 만들어야합니까?



--force 옵션을 추가하십시오.

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



나는 데이터베이스가 생성되지 않은 문제에 계속해서 뛰어 갔다.

나는 이것을 이렇게 고쳤다.

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



MySQL이있는 디렉토리로 이동하십시오.

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

또한 모든 데이터베이스를 덤프하려면 -all-databases 옵션을 사용하고 데이터베이스 이름을 더 이상 지정하지 않아도됩니다.

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

또는 SQLyog와 같은 일부 GUI 클라이언트를 사용하여이를 수행 할 수 있습니다.




대부분의 대답은 여기에 간단한 명령을 언급하는 반면

mysql -u database_user -p <database_file.sql

오늘날 데이터베이스와 테이블은이 명령으로는 충분하지 않은 utf8- 데이터 정렬을 사용하는 것이 일반적입니다. 내 보낸 테이블에 utf8- 데이터 정렬이 있으면이 명령을 사용해야합니다.

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

Surley는 다른 문자셋에도 사용할 수 있습니다. 올바른 표기법을 표시하는 방법은 다음과 같습니다.

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

한 논평은 데이터베이스가 존재하지 않는다면 빈 데이터베이스가 먼저 생성되어야한다고 언급했다. 어떤 경우에는 맞지만 내보내기 파일에 따라 달라질 수 있습니다. 내 보낸 파일에 이미 데이터베이스를 만드는 명령이 포함되어 있으면 데이터베이스를 별도의 단계로 작성하지 않아도되므로 가져 오기 오류가 발생할 수 있습니다. 따라서 가져 오기에서 어떤 명령이 파일에 포함되어 있는지 먼저 살펴보고 내보내는 것이 좋습니다. 특히 파일이 매우 커서 편집기에서 읽기 어려울 경우 유용합니다.

여기에 나열되고 설명 된 명령 매개 변수가 더 많이 있습니다.

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

다른 데이터베이스 버전을 사용하는 경우에도 해당 버전의 설명서를 검색하는 것이 좋습니다. 언급 된 링크는 MySQL 버전 5.7을 참조합니다.




위의 문제에 대한 모든 대답 중에서 이것은 가장 좋은 답변입니다.

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



  1. MySQL 커맨드 라인 열기
  2. mysql bin 디렉토리의 경로를 입력 하고 Enter 키를 누릅니다.
  3. SQL 파일을 mysql 서버의 bin 폴더에 붙여 넣는다.
  4. MySQL에 데이터베이스를 생성하십시오.
  5. SQL 파일을 가져올 특정 데이터베이스를 사용하십시오.
  6. source databasefilename.sql입력 하고 Enter를 누릅니다.
  7. SQL 파일이 성공적으로 업로드되었습니다.



데이터베이스가 이미있는 경우 다음을 사용하여 dump 또는 sql 파일을 가져옵니다

mysql -u username -p database_name < file.sql

MySQL에서 관련 데이터베이스 (비어 있음)를 만들 필요가 없다면 터미널이나 cmd에서 다음 명령을 실행하여 MySQL 콘솔에 처음 로그온하십시오

mysql -u userName -p;

메시지가 나타나면 암호를 입력하십시오.

다음으로 데이터베이스를 생성하고 사용하십시오.

mysql>create database yourDatabaseName;
mysql>use yourDatabaseName;

그런 다음 sql 또는 dump 파일을에서 데이터베이스로 가져옵니다.

mysql> source pathToYourSQLFile;

참고 : 터미널이 dump 또는 sql 파일이있는 위치에 있지 않으면 위의 상대 경로를 사용하십시오.




정보를 얻으려면 방금 기본 루트 + withoutpassword가 있었지만 위의 모든 대답과 작동하지 않았습니다.

  • 모든 권한과 암호로 새로운 사용자를 만들었습니다. 그것은 작동합니다.

  • -Password WITHOUT SPACE.




데이터베이스를 SQL 파일로 덤프하려면 다음 명령을 사용하십시오.

mysqldump -u username -p database_name > database_name.sql

SQL 파일을 데이터베이스로 가져 오려면 (SQL 파일과 동일한 디렉토리에 있는지 확인하거나 파일의 전체 경로를 제공하십시오)

mysql u -username -p database_name < database_name.sql



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

자세한 내용은 mysql --help 사용 mysql mysql --help

나는 이것이 우리의 맥락에서 유용한 옵션이라고 생각한다.

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

큰 데이터베이스를 가져오고 진행 표시 줄이없는 경우 재미 있습니다. 파이프 뷰어를 사용하고 파이프를 통한 데이터 전송을보십시오.

Mac의 경우 brew install pv . Debian / Ubuntu의 경우 apt-get install pv . 기타, 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



.sql 파일에 CREATE DATABASE IF NOT EXISTS db_nameUSE db_nameCREATE DATABASE IF NOT EXISTS db_name 포함되어 있으면 명령 줄에서 데이터베이스 이름을 지정할 필요가 없습니다.

.sql 파일에 언급 된 데이터베이스가없는 경우 데이터베이스를 만들 수있는 권한이있는 사용자와 연결되어 있는지 확인하십시오.




저는 Powershell 5에서 Windows 10을 사용하고 있으며 거의 ​​모든 "유닉스 계열"솔루션이 저에게 효과가없는 것으로 나타났습니다.

> 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

나는이 명령을 사용하여 끝난다.

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

그리고 완벽하게 작동합니다. 잘하면 도움이됩니다.

@ 의 answer 덕분에 btw.




아래 그림과 같이 zcat 하여 압축 된 gzip 파일을로드 할 수도 있습니다.

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



나는 그것이 Mac OS X 사용하는 사람들에게 유용 할 수 있다고 생각했다.

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

xamppmamp 또는 다른 웹 서버로 대체하십시오.






Related