AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 55960
Accepted
Guillermo
Guillermo
Asked: 2014-01-02 21:17:20 +0800 CST2014-01-02 21:17:20 +0800 CST 2014-01-02 21:17:20 +0800 CST

MySQL import csv file ERROR 13 (HY000): Não é possível obter a estatística de /path/file.csv (Errcode: 2)

  • 772

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 através de um arquivo 'data_test.csv, uma mensagem de erro 13 aparece.

O exercício do Terminal segue:

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 estiver usando LOCAL em LOAD DATA LOCAL INFILE aparece um erro: ERROR 1148 (42000): O comando usado não é permitido com esta versão do MySQL

mysql errors
  • 6 6 respostas
  • 94921 Views

6 respostas

  • Voted
  1. Best Answer
    Abdul Manaf
    2014-01-02T21:27:22+08:002014-01-02T21:27:22+08:00

    Espero que você esteja usando LOAD DATA INFILE.

    Tente usar LOAD DATA LOCAL INFILEem vez de LOAD DATA INFILE.

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

    Quando você fizer login no MySQL, faça como abaixo,

    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 usar --local-infileantes de carregar CSVem novas versões do MySQL, devido a razões de segurança.

    • 32
  2. Sam_Butler
    2016-04-09T04:42:38+08:002016-04-09T04:42:38+08:00

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

    • 3
  3. Polor Beer
    2017-04-06T13:20:01+08:002017-04-06T13:20:01+08:00

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

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

    • 3
  4. Narnia_Optimus
    2018-04-01T08:30:28+08:002018-04-01T08:30:28+08:00

    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 101 GB. Ao tentar importar este arquivo CSV, o sistema relatou LOW Disk Space Warning e a tarefa de importação não estava terminando. Frustrantemente, o utilitário de disco Gui tools mesmo df -hcomando mostrou que meu diretório raiz tinha mais de 85 GB de espaço em disco.

    Então aprendi que a LOCALopção copia o arquivo CSV para um local temporário na raiz/diretório. Em seguida, ele lê o arquivo temporário. Como meu arquivo CSV de 101 GB era maior que o espaço vazio deixado na minha raiz / eu estava vendo o aviso de disco baixo, no entanto, isso não foi detectado em muitas ferramentas GUI e baseadas em comandos, exceto no monitor do sistema que reconheci mais tarde. 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 no diretório de dados do MySQL no disco interno me permite executar o LOAD DATA INFILEcomando sem nenhuma mensagem de erro.

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

    • 3
  5. andy huang
    2022-01-09T08:42:05+08:002022-01-09T08:42:05+08:00

    Outra causa para o "Erro 13 Can't Stat" é que o arquivo de destino não está dentro da hierarquia de diretórios /var/lib/mysql. Aparentemente, o servidor mysql aborda o sistema de arquivos de maneira bem diferente de um usuário normal.

    Eu estava tentando carregar/atualizar uma tabela com:

    LOAD DATA INFILE '/home/pi/sites.csv'
    

    e o MySQL (na verdade, MariaDB) vomitaria com o Erro 13, não importa o que eu fizesse com as permissões. Irritantemente, ele daria esse erro de permissão negada mesmo se o arquivo não existisse, o que era uma pista suficiente para eu lembrar que em uma instalação do Win10, a fonte sites.csv estava em uma pasta Upload na hierarquia MySql.

    Depois de mover sites.csv para /var/lib/mysql/ens2_0 e referenciar sem um caminho absoluto, funcionou muito bem.

    • 1
  6. daniel krulewich
    2022-09-08T19:03:49+08:002022-09-08T19:03:49+08:00

    Supostamente para Ubuntu, Mint ou outras distribuições usando Apparmour, caminhos de arquivos e diretórios permitidos, podem ser editados dentro do arquivo de configuração localizado para mim em /etc/apparmor.d/usr.sbin.mysqld.

    No entanto, ainda recebi o erro 13, a menos que incluísse o parâmetro LOCAL antes de INFILE.

    • 0

relate perguntas

  • Existem ferramentas de benchmarking do MySQL? [fechado]

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

  • Como um grupo pode rastrear alterações no esquema do banco de dados?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve