프로그래밍 노트

MySQL에서 텍스트 파일의 SQL문 실행시키기 본문

데이터베이스/MySQL

MySQL에서 텍스트 파일의 SQL문 실행시키기

띠리 2007. 5. 15. 17:01

MySQL에서 테이블을 만들거나 데이터를 입력할때
MySQL Command Line Client에서 일일이 입력해도 되지만 좀 번거롭다.
MySQL Command Line Client에서 붙여넣기를 지원하기는 하지만
붙여넣기만으로는 좀 부족하다고 생각하는 사람들은 source 명령어를 이용하면 된다.

◆ source 명령어
외부 파일의 SQL문을 실행시킨다.

mysql> source <파일명>;

인터넷에서 찾아보니까 위에 같이만 씌여있어서 좀 해맸다.
저런식으로 씌여있으면 파일명을 쓸 때 일반적으로 아래와 같이 쓴다.

mysql> source d:\mysql\test.sql;

이렇게 쓰면 에러가 뜬다.
source명령어의 파일명을 쓸때는 반드시 "\"대신에 "/"를 써주어야된다.

mysql> source d:/mysql/test.sql;
Database changed
Query OK, 0 rows affected, 1 warning (0.06 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.02 sec)
mysql> select * from tlog;
+-------+---------------------+----------+-------------------+
| LogID | LogTime             | fSec     | fLog              |
+-------+---------------------+----------+-------------------+
|     1 | 2005-05-15 13:28:48 | test     | I am testing now. |
|     2 | 2007-05-17 11:22:43 | practice | I am a boy.       |
|     3 | 2007-05-17 18:28:48 | test     | I am a bad boy.   |
+-------+---------------------+----------+-------------------+
3 rows in set (0.00 sec)

test.sql의 간단 예제

use hong;
create table IF NOT EXISTS tLog ( LogID int8,
LogTime TIMESTAMP,
fSec char(16),
fLog char(255)
) type = InnoDB;
INSERT INTO tLog (LogID, LogTime, fSec, fLog)
values(1, 20050515132848, 'test', 'I am testing now.');
INSERT INTO tLog (LogID, LogTime, fSec, fLog)
values(2, 20070517112243, 'practice', 'I am a boy.');
INSERT INTO tLog (LogID, LogTime, fSec, fLog)
values(3, 20070517182848, 'test', 'I am a bad boy.');

데이터베이스를 먼저 선택하고 source로 파일을 실행하던지
아니면 파일안에서 데이터베이스를 선택해도 된다.

파일에서 SQL문을 실행할때는 2바이트 문자는 지원을 안하나보다.
무슨 설정을 해야되나? -.-;;


 

Comments