DATABASE

    mysql
    IMPORT
    • 조회수 8,438
    • 작성일 2010-06-19
    •  

    SQL문을 이용한 import 방법

     

    - Database 전체를 import하는 방법은 다음과 같습니다.

       database 전체를 import할 경우 반드시 해당 database가 생성되어 있어야 합니다.

     

       mysql -uuser_id -ppassword dbname < sql_file

     

       ex) Windows : C:\mysql\bin> mysql -utest -ptest testdb < test.sql

             Linux       : # mysql -utest -ptest testdb < test.sql

             => MySQL에 생성되어 있는 "testdb"라는 database에 test.sql file에 정의된 형식으

                 로 table 및 data를 import하라는 명령입니다.

     

    - 특정 table정보를 import하는 방법은 다음과 같습니다.

       table 정보를 import할 경우 해당 database에는 동일한 table name이 없어야 합니다.

     

       mysql -uuser_id -ppassword dbname < sql_file

     

       ex) Windows : C:\mysql\bin> mysql -utest -ptest testdb < test.sql

             Linux       : # mysql -utest -ptest testdb < test.sql

             => MySQL에 생성되어 있는 "testdb"라는 database에 test.sql file에 정의된 table을

                 생성하고, 포함된 data를 import하라는 명령입니다.

     

    - 전체 database를 import 하는 방법과 특정 table만을 import하는 명령이 동일하므로 혼란

       을 가져올 수가 있으나, 구별하는 방법은 오로지 dump 받은 file에 달려 있으므로 관리자

       는 해당 file 정보에 대해 숙지하고 있어야 합니다.

     

    Text로 저장된 data를 import하는 방법

     

    - Text file의 내용을 database에 import할 경우 mysqlimport라는 utility를 사용합니다. 예

       를 들어서 엑셀에서 작업한 10,000개의 데이터를 mysql에 저장시키려면, 엑셀에서 저장

       할 때 각각 쉘 구분을 ";"나 "|" 으로 하고 텍스트 형식으로 저장합니다.

     

    - MySQL에 저장시키기 위해서는 미리 저장하기 위한 테이블이 생성되어 있어야 합니다. 그

       리고 사용자 권한에 파일데이터를 데이터베이스에 입력할 수 있는 권한이 있어야 합니다.

       그러나 일반 사용자에게는 보통 파일데이터를 직접 입력할 수 있는 권한을 주지 않으므로

       루트 권한으로 하는 것이 좋습니다. 부득이할 경우 사용자에게 파일데이터를 직접 입력할

       수 있는 권한을 주면 됩니다. mysql데이터베이스에서 user 테이블의 사용자에게 "File_

       priv" 권한을 "Y" 로 주면 됩니다.

     

    - 사용방법은 다음과 같습니다.

     

       mysqlimport -uuser_id -ppassword --fields-terminated-by=구분자

      dbname table_name text_file

     

       ex) Windows : C:\mysql\bin> mysqlimport -utest -ptest --fields-terminated-by=;

                               testdb test test.txt

             Linux       : # mysqlimport -utest -ptest --fields-terminated-by=; testdb test

                                 test.txt

             => testdb 데이터베이스의 test라는 테이블에 test.txt 의 내용을 입력합니다. 각 필드

                 의 구분은 ";"로 한다는 명령입니다.