MySQL 가져 오기 CSV 파일 오류 13 (HY000) : /path/file.csv의 통계를 가져올 수 없음 (오류 코드 : 2)


16

나는 MySQL (5.5.34) / Linux (Ubuntu 12.04 LTS)의 초보자입니다.

하나의 테이블로 간단한 데이터베이스를 만들었습니다. 'data_test.csv 파일을 통해 데이터를 가져 오려고하면 오류 메시지 13이 나타납니다.

터미널에서 발췌 한 내용은 다음과 같습니다.

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> 

참고 : LOAD DATA LOCAL INFILE에서 LOCAL을 사용하는 경우 오류가 발생합니다. ERROR 1148 (42000) :이 MySQL 버전에서는 사용 된 명령을 사용할 수 없습니다.

답변:


26

나는 당신이 사용하기를 바랍니다 LOAD DATA INFILE.

LOAD DATA LOCAL INFILE대신 사용하십시오 LOAD DATA INFILE.

다른 문제는 다음과 같습니다. MySQL LOAD DATA 링크를 방문하십시오 .

MySQL에 로그인하면 다음과 같이하십시오.

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;

이제를 사용하여 CSV를로드하십시오 . 보안상의 이유로 새 MySQL 버전에 로드하기 전에 LOAD DATA LOCAL INFILE사용해야 합니다.--local-infileCSV


3

위의 답변이 OP의 문제를 해결했지만 동일한 문제를 해결하는 방법에 기여해야한다고 생각합니다. 오류 13은 올바르지 않거나 불충분 한 파일 권한으로 인해 발생합니다. 필자의 경우 이것은 SELinux로 다운되었습니다. SELinux를 사용하는 경우 MySQL의 허용 된 디렉토리에 데이터 파일 경로를 추가하기위한 수정 사항은 다음 응답에서 찾을 수 있습니다. /programming//a/3971632/1449160


2

MySQL을 사용하려면 CSV 파일이 액세스 할 수있는 디렉토리에 있어야합니다.

"/ home / stockrecdb /"에서 "/ tmp"로 파일을 이동하면 문제가 해결 될 수도 있습니다.


1

Abdul Manaf가 제안한 옵션을 Error 13 (HY000)사용하여 해결 된 이 정확한 오류 메시지 가 LOCAL있습니다. 그러나 101GB 크기의 CSV 파일이 붙어 있습니다. 이 CSV 파일을 가져 오는 중에 시스템에서 디스크 공간 부족 경고를보고했으며 가져 오기 작업이 완료되지 않았습니다. 실망 df -h스럽게도 디스크 유틸리티 Gui tools조차도 내 루트 디렉토리에 85GB 이상의 디스크 공간이 남아 있음을 보여주었습니다.

그런 다음 LOCAL옵션이 CSV 파일을 루트 / 디렉토리의 임시 위치에 복사 한다는 것을 알게 되었습니다. 그런 다음 임시 파일에서 읽습니다. 101GB의 CSV 파일이 루트에 남은 빈 공간보다 컸기 때문에 디스크 부족 경고가 표시되었지만 나중에 인식하는 시스템 모니터를 제외한 많은 GUI 및 명령 기반 도구에서 감지되지 않았습니다. 300GB가 넘는 MySQL 데이터베이스에서 작업 중이므로 MySQL 데이터 디렉토리를 다른 내부 디스크로 이동해야했고 외부 하드 디스크에서 CSV를 가져오고있었습니다. 101GB CSV 파일을 내부 디스크의 MySQL 데이터 디렉토리에 복사하면 LOAD DATA INFILE오류 메시지없이 명령을 실행할 수 있습니다.

따라서 LOCAL루트 디렉토리의 여유 공간보다 큰 CSV 파일에 대한 옵션을 알고 있어야 합니다. 로컬 옵션은 SSD의 내구성에 좋지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.