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





15 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;
import source 명령어

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

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

database_name < file.sql

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

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



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

 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 파일이 성공적으로 업로드되었습니다.



나를 위해 일한 해결책은 아래와 같습니다.

Use your_database_name;
SOURCE path_to_db_sql_file_on_your_local;



단일 데이터베이스를 가져 오려면 다음 명령을 사용하십시오.

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

여러 데이터베이스 덤프를 가져 오려면 다음 명령을 사용하십시오.

mysql -u username -p password < dump.sql



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

mysqldump -u username -p database_name > database_name.sql

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

mysql u -username -p database_name < database_name.sql



한 번에 여러 SQL 파일을 가져 오려면 다음을 사용하십시오.

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

간단한 가져 오기 :

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

WAMP :

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

XAMPP의 경우 :

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



데이터베이스 가져 오기

  1. 운전하기 :

    command: d:
    
  2. MySQL 로그인

    command: c:\xampp\mysql\bin\mysql -u root -p
    
  3. 그것은 pwd를 요구할 것이다. 그것을 입력하십시오 :

    pwd
    
  4. 데이터베이스 선택

    use DbName;
    
  5. 파일 이름 제공

    \.DbName.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 클라이언트를 사용하여이를 수행 할 수 있습니다.




다음 명령은 Windows 7의 WAMP 명령 줄 (cmd)에서 나를 위해 작동합니다.

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



백업을 위해 BAT 파일을 만들고 작업 스케줄러를 사용하여이 BAT 파일을 실행하십시오. 데이터베이스를 백업합니다. 다음 줄을 복사하여 Notepad 붙여 넣은 다음 .bat 파일을 저장하고 시스템에서 실행하십시오.

@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



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

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

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

mysql -u database_user -p --default-character-set = utf8 [db_name] <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을 참조합니다.




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.




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



명령 줄에 자격 증명을 제공하는 것은 좋은 생각이 아닙니다. 위의 답변은 훌륭하지만 언급하는 것을 게을리하지 않습니다.

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

여기서 etc / myhost.cnf는 호스트, 사용자, 암호가 들어있는 파일이며 명령 행에서 암호가 노출되지 않도록합니다. 다음은 샘플입니다.

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



Related