MySQL에서 SQL 스크립트를 실행하는 방법은 무엇입니까?


409

MySQL에서 SQL 쿼리가 포함 된 텍스트 파일을 실행하고 싶습니다.

나는 달리기를 시도 source /Desktop/test.sql하고 오류를 받았다.

mysql>. \ home \ sivakumar \ Desktop \ test.sql 오류 : '\ home \ sivakumar \ Desktop \ test.sql'파일을 열지 못했습니다 : 오류 : 2

내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까?



기본적으로 이것이 여기에 대한 대답이어야한다고 생각합니다. /home/sivakumar/Desktop/test.sql
talsibony

답변:


433

MySQL 명령 줄에 mysql>있는 경우 SQL 파일을로 선언해야합니다 source.

mysql> source \home\user\Desktop\test.sql;

29
Mac의 mysql 5.6.10의 경우 파일 경로에 작은 따옴표가 필요하지 않습니다.
RNA

3
Windows의 경우 '\'대신 '/'를 사용하면 올바르게 작동했습니다. 원래 '/'를 사용할 때 오류가 발생했습니다. 이것이 나를 위해 일한 것입니다 ... source C : /Users/macombers/Downloads/midcoast_db.sql;
Zack Macomber

우분투에서 인용문도 삭제하십시오 (EditLine 래퍼를 사용하여 mysql Ver 14.14 debian-linux-gnu (x86_64))
Siddhartha

1
@kapil 무엇에 상대적입니까? 이 시점에서 당신은 MySQL 내부에 있으므로 두려워하는 상대가 없습니다.
토마스 에드워즈

1
@Sarah \ 공백보다 먼저 사용 하거나 파일 이름을로 바꿉니다 ".
토마스 에드워즈

165

많은 옵션이 있습니다.

  • MySQL 명령 행 클라이언트를 사용하십시오. mysql -h hostname -u user database < path/to/test.sql
  • MySQL GUI 도구를 설치하고 SQL 파일을 연 다음 실행하십시오.
  • 웹 서버를 통해 데이터베이스를 사용할 수있는 경우 phpmysql을 사용하십시오.

3
사용자 비밀번호 (-p 옵션)는 어떻습니까?
Amir Katz

@AmirKatz -p이 옵션을 사용하여 암호를 제공 할 수 있지만 권장하지는 않습니다. 동일한 호스트에있는 다른 사용자 ps는이 경우 시스템 도구를 사용 하여 읽을 수 있습니다 .
Eugen Rieck

1
@EugenRieck -p암호가 다음 줄에 입력하는 인수 프롬프트없이
바비 잭

130

다음 명령을 사용하여 텍스트 파일로 작성된 mysql 문을 실행할 수 있습니다.

mysql -u yourusername -p yourpassword yourdatabase < text_file

데이터베이스가 아직 생성되지 않은 경우 먼저 다음을 사용하여 mysql에 로그인하십시오.

mysql -u yourusername -p yourpassword yourdatabase

그때:

mysql>CREATE DATABASE a_new_database_name

그때:

mysql -u yourusername -p yourpassword a_new_database_name < text_file

그렇게해야합니다!

자세한 정보는 여기 : http://dev.mysql.com/doc/refman/5.0/en/mysql-batch-commands.html


7
Windows의 경우 : 암호의 경우 따옴표와 공백이 없어야 작동합니다 (암호 자체에는 공백이나 특수 문자가 포함되지 않았습니다) :mysql -u yourusername -p"yourpassword"
TmTron

1
비밀번호를 묻지 않으려면 여기에 설명 된 방법이 효과가 있다고 생각합니다. stackoverflow.com/questions/9293042/…
alex9311

58

가장 좋아하는 옵션은 다음과 같습니다.

 mysql --user="username" --database="databasename" --password="yourpassword" < "filepath"

""로 문자열을 묶을 때 잘못된 경로와 공백으로 인한 실수를 피하고 아마도 내가 경험하지 못한 문자에 대한 더 많은 문제를 피하기 때문에이 방법을 사용합니다.


@elcuco 주석을 사용하면이 명령을 [space]와 함께 사용하여 bash에 기록에 저장하지 말라고 명령하면 대부분의 bash에서 즉시 작동합니다.

여전히 명령을 기록에 저장하는 경우 다음 솔루션을 확인하십시오.

기록에 보관하지 않고 명령 실행


추가 보안 편집

추가 안전을 위해 다음 명령을 사용하고 명령 행 입력에 비밀번호를 입력하십시오.

mysql --user="username" --database="databasename" -p < "filepath"

18
암호는 ~ / .bash_history에 저장되며 다른 프로그램 trough / proc /에서 액세스 할 수 있으므로 명령 줄에 암호를 전달하지 않는 것이 좋습니다.
elcuco

@elcuco의 훌륭한 조언! 또한 -p 뒤에 다른 플래그를 사용하거나 마지막 매개 변수로 사용하면 다른 매개 변수가 의도 한 암호로 잘못 사용되지 않습니다.
총재

명령 줄 인수는 여전히 다른 사용자가 볼 수 있습니다. 예 : / proc / * / cmdline의 i의 경우; $ i를 반향하십시오; 고양이 $ i; 완료
elcuco

서버 비밀번호를 콘솔 히스토리에 공개 할 때 이것은 다시 시작되지 않습니다.
Alexius DIAKOGIANNIS

@AlexiusDiakogiannis 명령 전에 [space]로 명령을 실행할 때 히스토리에서 명령을 볼 수있는 방법을 예를 들어 주시겠습니까?
talsibony

56

모든 최고의 답변이 좋습니다. 그러나 다만 만일 누군가가 원격 서버에 텍스트 파일에서 쿼리를 실행하고자 AND , 당신은이 작업을 수행 할 수 있습니다 (대신 콘솔에 표시의) 파일에 결과를 저장 :

mysql -u yourusername -p yourpassword yourdatabase < query_file > results_file

이것이 누군가를 돕기를 바랍니다.


10
-p암호와 비밀번호 사이에 공백이 없어야 합니다
webNeat

파일 쓰기의 목적이 데이터 덤프를 취하는 경우 SELECT ... INTO OUTFILE /path/to/file.csv보다 효율적인 방법 이라고 생각 합니다. 여기에서 옵션과 구문을 참조하십시오 -dev.mysql.com/doc/refman/5.7/en/select-into.html
Anis

20

.sql 파일의 경로를 다음과 같이 지정하십시오.

source c:/dump/SQL/file_name.sql;

이미지 참조 :


정말 감사합니다! 이 기능은 사용자에게 SUDO 권한이없고 원격 Amazon RDS에 대해
Volatil3

20

나는이 답변을 찾기 위해 여기에 왔으며, 여기에 내가 가장 잘 맞는 것을 발견했습니다. 참고 Ubuntu 16.xx를 사용하고 있습니다.

  1. 다음을 사용하여 mysql에 액세스하십시오.

mysql -u <your_user> - p

  1. mysql 프롬프트에서 다음을 입력하십시오.

source file_name.sql

도움이 되었기를 바랍니다.


2
프롬프트를 실행하는 대신 단일 명령으로 두 단계를 결합하는 것이 유용 할 수도 있습니다.mysql -u<user> -p -e 'source filename.sql'
junix

감사합니다, @junix! 이 방법으로 사용 된 소스 옵션은 내가 찾던 것입니다.
ManuelJE

14
mysql> source C:\Users\admin\Desktop\fn_Split.sql

작은 따옴표를 지정하지 마십시오.

위의 명령이 작동하지 않으면 파일을 c : 드라이브에 복사하고 다시 시도하십시오. 아래 그림과 같이,

mysql> source C:\fn_Split.sql

13

명령 행에서 직접 비밀번호 인수를 전달하지 않는 것이 좋습니다. ~/.bash_history파일에 저장 되며 다른 응용 프로그램에서 액세스 할 수 있습니다.

대신 이것을 사용하십시오 :

mysql -u user --host host --port 9999 database_name < /scripts/script.sql -p
Enter password:


9

아마도 슬래시 / 블랙 슬래시를 변경해야합니다.

 \home\sivakumar\Desktop\test.sql

 /home/sivakumar/Desktop/test.sql

따라서 명령은 다음과 같습니다.

source /home/sivakumar/Desktop/test.sql

6

mysql 명령 프롬프트 에서 다음을 사용하십시오 -

source \\home\\user\\Desktop\\test.sql;

인용을 사용하지 마십시오. 경로 에 공백 ( '')이 포함되어 있더라도 인용 부호를 전혀 사용 하지 마십시오 .


5

리디렉션 대신 다음을 수행합니다.

mysql -h <hostname> -u <username> --password=<password> -D <database> -e 'source <path-to-sql-file>'

이렇게하면 파일 경로-sql-file이 실행됩니다.


5

그것을하는 많은 방법.

From Workbench: File > Run SQL Script -- then follow prompts

From Windows Command Line:
   Option 1: mysql -u usr -p
             mysql> source file_path.sql
   Option 2: mysql -u usr -p '-e source file_path.sql'
   Option 3: mysql -u usr -p < file_path.sql
   Option 4: put multiple 'source' statements inside of file_path.sql (I do this to drop and recreate schemas/databases which requires multiple files to be run)
             mysql -u usr -p < file_path.sql

명령 행에서 오류가 발생하면 이전에 실행했는지 확인하십시오

cd {!!>>mysqld.exe home directory here<<!!}
mysqld.exe --initialize 

이것은 mysqld.exe 디렉토리 내에서 실행해야하므로 CD입니다.

이것이 도움이 되길 바랍니다.


3

mysql -u yourusername -p yourpassword yourdatabase < text_file원격 서버 (Amazon의 EC2)에서 작동하지 않았기 때문에 ...

데이터베이스가 먼저 작성되어 있는지 확인하십시오.

그때:

mysql --host=localhost --user=your_username --password=your_password your_database_name < pathTofilename.sql

3

나중에 참조 할 수 있도록 msql 콘솔의 Windows에서 위에서 언급 한 방법과 비교하여 작동합니다.

mysql >>source c://path_to_file//path_to_file//file_name.sql;

루트 드라이브의 이름이 "c"가 아닌 경우 드라이브 이름과 교환하십시오. 먼저 백 슬래시를 시도하십시오. 작동하지 않으면 슬래시를 시도하십시오. 작동하지 않으면 전체 파일 경로, 파일 이름에 .sql 확장자가 있는지 확인하고 버전이 세미콜론을 요구하는 경우 해당 경로가 있는지 확인한 후 다시 시도하십시오.


0

나는이 오류가 있었고 아무 소용이 없었던 모든 조언을 시도했다.

마지막으로 문제는 내 폴더에 폴더 이름에 공백이있어 폴더 경로에 슬래시로 표시된다는 것입니다. 찾아서 제거하면 정상적으로 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.