![MySql: 데이터를 파일로 로드](https://linux55.com/image/19155/MySql%3A%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC%20%ED%8C%8C%EC%9D%BC%EB%A1%9C%20%EB%A1%9C%EB%93%9C.png)
나는 사용하고있다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;