MySql: LOAD DATA INFILE

1

Estou usando o MySQL v5.1 na máquina Ubuntu .

O diretório de dados

MySQL é /var/lib/mysql/

Eu tenho um arquivo test.dat localizado em /var/lib/mysql/tmp/test.dat

Gostaria de carregar dados do arquivo test.dat em minha tabela de banco de dados, portanto, executo a seguinte instrução SQL:

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

Mas recebi o seguinte erro:

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

Qual poderia ser o motivo?

PS uma coisa que vem à mente é que /var/lib/mysql/ só pode ser acessado pelo usuário root , mas não tenho certeza se é o motivo. p>     

por Mellon 29.11.2011 / 16:20

2 respostas

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

Sim, você não tem permissões para esse diretório (pode ser root:root dependendo da sua configuração). Use:

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

Ou copie o arquivo para seu diretório pessoal (ou qualquer outro lugar) e chown para você mesmo.

    
por 29.11.2011 / 16:42
0

se o seu arquivo estiver em localhost, use

LOAD DATA LOCAL INFILE ...

em vez de LOAD DATA INFILE .

Além disso, o arquivo tem permissão para ser lido pelo usuário mysql, e mais tem isso executado pelo mysql root:

GRANT FILE ON *.* to <your_db_user_name>@localhost;
    
por 23.01.2013 / 09:06