Arquivo csv de importação do MySQL ERRO 13 (HY000): Não é possível obter o status de /path/file.csv (código de erro: 2)

16

Eu sou um iniciante absoluto no MySQL (5.5.34) / Linux (Ubuntu 12.04 LTS) `

Eu criei um banco de dados simples com uma tabela. Ao tentar importar dados para ele por meio de um arquivo 'data_test.csv, uma mensagem de erro 13 é exibida.

Exerte do Terminal a seguir:

mysql> source /home/g/stockrecdb/load_test.sql;
Database changed
ERROR 13 (HY000): Can't get stat of '/home/stockrecdb/data_test.csv' (Errcode: 2)
mysql> 

Nota: se usar LOCAL em LOAD DATA LOCAL INFILE, um erro será exibido: ERRO 1148 (42000): O comando usado não é permitido nesta versão do MySQL

Guillermo
fonte

Respostas:

26

Espero que você esteja usando LOAD DATA INFILE.

Tente usar em LOAD DATA LOCAL INFILEvez de LOAD DATA INFILE.

Outro problema pode ser esse, visite os seguintes links: MySQL LOAD DATA.

Quando você faz login no MySQL, faça o seguinte,

abdul@xmpp3:~/Desktop/Jiva$ mysql -uroot -p --local-infile
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 257
Server version: 5.5.29-0ubuntu0.12.04.1-log (Ubuntu)

Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use mydb;


mysql> LOAD DATA LOCAL INFILE '/home/abdul/Desktop/STATISTIC_T.csv' INTO TABLE STATISTIC_T  FIELDS TERMINATED BY '|' ENCLOSED BY '"' LINES TERMINATED BY '\n'  IGNORE 1 LINES;

Agora carregue seu CSV usando LOAD DATA LOCAL INFILE, precisamos usá-lo --local-infileantes de carregar CSVnas novas versões do MySQL, devido a razões de segurança.

Abdul Manaf
fonte
3

Embora a resposta acima tenha resolvido o problema do OP, acho que devo contribuir com relação à maneira como resolvi o mesmo problema. O erro 13 é causado por permissões de arquivo incorretas ou insuficientes. No meu caso, isso se resumia ao SELinux. Se você estiver usando o SELinux, a correção para adicionar o caminho do arquivo de dados aos diretórios permitidos para MySQL pode ser encontrada nesta resposta: /programming//a/3971632/1449160

Sam_Butler
fonte
2

O MySQL exige que o arquivo CSV esteja em um diretório que ele possa acessar.

Mova seu arquivo de "/ home / stockrecdb /" para "/ tmp" também pode resolver o problema.

Cerveja Polor
fonte
1

Eu tive essa mensagem de erro exata Error 13 (HY000)que foi resolvida usando a LOCALopção sugerida por Abdul Manaf. No entanto, fiquei preso com um arquivo CSV de tamanho 101GB. Ao tentar importar esse arquivo CSV, o sistema relatou um aviso de pouco espaço em disco e a tarefa de importação não estava sendo concluída. De maneira frustrante, o comando Gui tools do utilitário de disco df -hmostrou que meu diretório raiz tinha mais de 85 GB de espaço em disco.

Aprendi então que a LOCALopção copia o arquivo CSV para um local temporário no diretório raiz /. Em seguida, ele lê o arquivo temporário. Como meu arquivo CSV de 101 GB era maior que o espaço vazio restante na minha raiz / eu estava vendo o aviso de pouco disco, no entanto, isso não foi detectado em muitas ferramentas baseadas em comandos e GUI, exceto no monitor do sistema que reconheci posteriormente. Como estou trabalhando em um banco de dados MySQL de mais de 300 GB, tive que mover o diretório de dados do MySQL para outro disco interno e estava importando o CSV de um disco rígido externo. Copiar o arquivo CSV de 101 GB para o diretório de dados do MySQL no disco interno permite executar o LOAD DATA INFILEcomando sem nenhuma mensagem de erro.

Portanto, esteja ciente da LOCALopção de arquivos CSV maiores, maiores que o espaço livre do diretório raiz. A opção LOCAL também não é uma boa ideia para a resistência do SSD.

Narnia_Optimus
fonte