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




불러 불러오기 (25)

이 명령을 사용하여 명령 줄에서 SQL을 가져올 수 있습니다.

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

예를 들어, 사용자 이름이 root 이고 암호가 password . 그리고 데이터베이스 이름은 bank 이고 SQL 파일은 bank.sql 입니다. 그렇다면 다음과 같이하면됩니다.

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

SQL 파일의 위치를 ​​기억하십시오. SQL 파일이 Desktop 폴더 / 디렉토리에 있으면 데스크탑 디렉토리로 이동하여 다음과 같은 명령을 입력하십시오.

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

그리고 당신이 Project 디렉토리에 있고 SQL 파일이 Desktop 디렉토리에 있다면. Project 디렉토리에서이 파일에 액세스하려면 다음과 같이 할 수 있습니다.

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

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

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

database_name < file.sql

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

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

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

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

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

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

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

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

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


아래 그림과 같이 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 또는 다른 웹 서버로 대체하십시오.


데이터베이스가 이미있는 경우 다음을 사용하여 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 파일이있는 위치에 있지 않으면 위의 상대 경로를 사용하십시오.


.sql 파일에 CREATE DATABASE IF NOT EXISTS db_nameUSE db_nameCREATE DATABASE IF NOT EXISTS db_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

MySQL 실행 파일이있는 디렉토리로 이동하십시오. -u 는 사용자 이름이고 -p 는 암호를 묻는 프롬프트입니다.

C:\xampp\mysql\bin>mysql -u username -ppassword databasename < C:\file.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

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 username -p database_name < file.sql

MySQL 옵션을 확인하십시오.

주 1 : SQL 파일 file.sql 의 전체 경로를 사용하는 것이 더 좋습니다.

주 2 : 원본 데이터베이스의 루틴 및 트리거를 유지하려면 -R--triggers 를 사용하십시오. 그들은 기본적으로 복사되지 않습니다.


한 번에 여러 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

거대한 파일을 가져 오는 데 걸리는 시간과 관련하여 가장 중요한 것은 MySQL의 기본 설정이 autocommit = true 이기 때문에 시간이 더 걸리는 것 autocommit = true . 파일을 가져 오기 전에 이것을 설정 한 다음 가져 오기가 어떻게 작동하는지 확인해야합니다.

당신은 다음과 같은 일을 할 필요가 있습니다.

mysql> use db_name;

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

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

mysqldump -u username -p database_name > database_name.sql

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

mysql u -username -p database_name < database_name.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을 참조합니다.


https://.com/a/17666285/1888983 유사하게
나를위한 주요 차이점 :

  1. 데이터베이스가 먼저 존재해야합니다.
  2. -p 와 암호 사이에 공백이 없어야합니다.
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

MariaDB에서 fedora 26 실행.


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

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

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

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

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

mysql -u username -p password < dump.sql

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

Use your_database_name;
SOURCE path_to_db_sql_file_on_your_local;

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

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

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

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

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;

친구가 최근에이 주제에 관해 나에게 묻기 때문에 명령 파일 인수를 배치 파일로 처리하는 방법을 게시 할 것이라고 생각했습니다.

이 기법은 약간의 오버 헤드가 있지만, 배치 파일을 이해하기 쉽고 빠르게 구현할 수 있습니다. 다음 구조를 지원하는 것은 물론 :

>template.bat [-f] [--flag] [/f] [--namedvalue value] arg1 [arg2][arg3][...]

그것의 jist는 :init , :parse:main 함수를 가지고 있습니다.

사용 예

>template.bat /?
test v1.23
This is a sample batch file template,
providing command-line arguments and flags.

USAGE:
test.bat [flags] "required argument" "optional argument"

/?, --help           shows this help
/v, --version        shows the version
/e, --verbose        shows detailed output
-f, --flag value     specifies a named parameter value

>template.bat          <- throws missing argument error
(same as /?, plus..)
****                                   ****
****    MISSING "REQUIRED ARGUMENT"    ****
****                                   ****

>template.bat -v
1.23

>template.bat --version
test v1.23
This is a sample batch file template,
providing command-line arguments and flags.

>template.bat -e arg1
**** DEBUG IS ON
UnNamedArgument:    "arg1"
UnNamedOptionalArg: not provided
NamedFlag:          not provided

>template.bat --flag "my flag" arg1 arg2
UnNamedArgument:    "arg1"
UnNamedOptionalArg: "arg2"
NamedFlag:          "my flag"

>template.bat --verbose "argument #1" --flag "my flag" second
**** DEBUG IS ON
UnNamedArgument:    "argument #1"
UnNamedOptionalArg: "second"
NamedFlag:          "my flag"

template.bat

@::!/dos/rocks
@echo off
goto :init

:header
    echo %__NAME% v%__VERSION%
    echo This is a sample batch file template,
    echo providing command-line arguments and flags.
    echo.
    goto :eof

:usage
    echo USAGE:
    echo   %__BAT_NAME% [flags] "required argument" "optional argument" 
    echo.
    echo.  /?, --help           shows this help
    echo.  /v, --version        shows the version
    echo.  /e, --verbose        shows detailed output
    echo.  -f, --flag value     specifies a named parameter value
    goto :eof

:version
    if "%~1"=="full" call :header & goto :eof
    echo %__VERSION%
    goto :eof

:missing_argument
    call :header
    call :usage
    echo.
    echo ****                                   ****
    echo ****    MISSING "REQUIRED ARGUMENT"    ****
    echo ****                                   ****
    echo.
    goto :eof

:init
    set "__NAME=%~n0"
    set "__VERSION=1.23"
    set "__YEAR=2017"

    set "__BAT_FILE=%~0"
    set "__BAT_PATH=%~dp0"
    set "__BAT_NAME=%~nx0"

    set "OptHelp="
    set "OptVersion="
    set "OptVerbose="

    set "UnNamedArgument="
    set "UnNamedOptionalArg="
    set "NamedFlag="

:parse
    if "%~1"=="" goto :validate

    if /i "%~1"=="/?"         call :header & call :usage "%~2" & goto :end
    if /i "%~1"=="-?"         call :header & call :usage "%~2" & goto :end
    if /i "%~1"=="--help"     call :header & call :usage "%~2" & goto :end

    if /i "%~1"=="/v"         call :version      & goto :end
    if /i "%~1"=="-v"         call :version      & goto :end
    if /i "%~1"=="--version"  call :version full & goto :end

    if /i "%~1"=="/e"         set "OptVerbose=yes"  & shift & goto :parse
    if /i "%~1"=="-e"         set "OptVerbose=yes"  & shift & goto :parse
    if /i "%~1"=="--verbose"  set "OptVerbose=yes"  & shift & goto :parse

    if /i "%~1"=="--flag"     set "NamedFlag=%~2"   & shift & shift & goto :parse

    if not defined UnNamedArgument     set "UnNamedArgument=%~1"     & shift & goto :parse
    if not defined UnNamedOptionalArg  set "UnNamedOptionalArg=%~1"  & shift & goto :parse

    shift
    goto :parse

:validate
    if not defined UnNamedArgument call :missing_argument & goto :end

:main
    if defined OptVerbose (
        echo **** DEBUG IS ON
    )

    echo UnNamedArgument:    "%UnNamedArgument%"

    if defined UnNamedOptionalArg      echo UnNamedOptionalArg: "%UnNamedOptionalArg%"
    if not defined UnNamedOptionalArg  echo UnNamedOptionalArg: not provided

    if defined NamedFlag               echo NamedFlag:          "%NamedFlag%"
    if not defined NamedFlag           echo NamedFlag:          not provided

:end
    call :cleanup
    exit /B

:cleanup
    REM The cleanup function is only really necessary if you
    REM are _not_ using SETLOCAL.
    set "__NAME="
    set "__VERSION="
    set "__YEAR="

    set "__BAT_FILE="
    set "__BAT_PATH="
    set "__BAT_NAME="

    set "OptHelp="
    set "OptVersion="
    set "OptVerbose="

    set "UnNamedArgument="
    set "UnNamedArgument2="
    set "NamedFlag="

    goto :eof




mysql sql command-line import