MySql: 데이터를 파일로 로드

MySql: 데이터를 파일로 로드

나는 사용하고있다MySQL v5.1존재하다우분투기계.

MySQL데이터 디렉토리는/var/lib/mysql/

test.dat다음 위치에 파일이 있습니다 ./var/lib/mysql/tmp/test.dat

test.dat파일의 데이터를 데이터베이스 테이블로 로드 하려고 하므로 다음 SQL 문을 실행합니다.

LOAD DATA INFILE '/var/lib/mysql/tmp/test.dat'
            INTO TABLE myapp.cars;

하지만 다음과 같은 오류가 발생합니다.

Mysql2::Error: Can't get stat of '/var/lib/mysql/tmp/test.dat' (Errcode: 2): LOAD DATA INFILE '/var/lib/mysql/tmp/test.dat'

이유는 무엇입니까? ?

폴리스티렌마음에 떠오르는 한 /var/lib/mysql/가지는루트 사용자, 하지만 그게 이유인지는 잘 모르겠습니다.

답변1

$ ls -ld /var/lib/mysql
drwx------ 21 mysql mysql 4096 2011-11-18 14:07 /var/lib/mysql

예, 해당 디렉터리에 대한 권한이 없습니다( root:root설정에 따라 다를 수 있음). 사용:

sudo mysql -u mysqluser -e "LOAD DATA INFILE '/var/lib/mysql/tmp/test.dat' INTO TABLE myapp.cars;"

아니면 파일을 홈 디렉터리(또는 다른 위치)에 복사하여 chown자신에게 보내세요.

답변2

파일이 localhost에 있으면 다음을 사용하십시오.

LOAD DATA LOCAL INFILE ...

바꾸다 LOAD DATA INFILE.

또한 mysql 사용자가 읽을 수 있는 파일 권한을 갖고 mysql 루트로 파일을 실행하십시오.

GRANT FILE ON *.* to <your_db_user_name>@localhost;

관련 정보