MySQL นำเข้าไฟล์ csv ข้อผิดพลาด 13 (HY000): ไม่สามารถรับค่าสถิติของ /path/file.csv (Errcode: 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> 

หมายเหตุ: หากใช้ LOCAL ใน LOAD DATA LOCAL INFILE จะมีข้อผิดพลาดปรากฏขึ้น: ข้อผิดพลาด 1148 (42000): คำสั่งที่ใช้ไม่ได้รับอนุญาตกับ MySQL เวอร์ชันนี้

คำตอบ:


26

LOAD DATA INFILEฉันหวังว่าคุณกำลังใช้

พยายามที่จะใช้แทนLOAD DATA LOCAL INFILELOAD DATA INFILE

ปัญหาอื่น ๆ อาจเป็นเช่นนี้โปรดไปที่ลิงก์ต่อไปนี้: MySQL โหลดข้อมูล

เมื่อคุณเข้าสู่ระบบ 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 ของคุณโดยใช้LOAD DATA LOCAL INFILEเราจำเป็นต้องใช้--local-infileก่อนที่เราจะโหลดCSVใน MySQL vesrsions ใหม่เนื่องจากเหตุผลด้านความปลอดภัย


3

แม้ว่าคำตอบข้างต้นจะแก้ปัญหาสำหรับ OP แต่ฉันรู้สึกว่าฉันควรมีส่วนร่วมเกี่ยวกับวิธีที่ฉันแก้ไขปัญหาเดียวกัน ข้อผิดพลาด 13 เกิดจากการอนุญาตไฟล์ไม่ถูกต้องหรือไม่เพียงพอ ในกรณีของฉันมันลงไปที่ SELinux หากคุณใช้ SELinux การแก้ไขสำหรับการเพิ่มพา ธ ไฟล์ข้อมูลของคุณไปยังไดเรกทอรีที่อนุญาตสำหรับ MySQL สามารถพบได้ในคำตอบนี้: /programming//a/3971632/1449160


2

MySQL ต้องการให้ไฟล์ CSV อยู่ในไดเรกทอรีที่สามารถเข้าถึงได้

ย้ายไฟล์ของคุณจาก "/ home / stockrecdb /" ไปที่ "/ tmp" อาจช่วยแก้ปัญหาได้เช่นกัน


1

ฉันได้รับข้อความแสดงข้อผิดพลาด Error 13 (HY000)ที่แก้ไขได้โดยใช้LOCALตัวเลือกที่ Abdul Manaf แนะนำ อย่างไรก็ตามฉันติดกับไฟล์ CSV ขนาด 101GB ในขณะที่พยายามนำเข้าไฟล์ CSV นี้ระบบรายงาน LOW Disk Space Warning และงานนำเข้าไม่เสร็จสิ้น df -hเฉื่อยชาเครื่องมือ Gui ยูทิลิตี้ดิสก์แม้คำสั่งแสดงให้เห็นว่าไดเรกทอรีรากของฉันมีพื้นที่ว่างในดิสก์มากกว่า 85GB

จากนั้นฉันได้เรียนรู้ว่าLOCALตัวเลือกคัดลอกไฟล์ CSV ไปยังสถานที่ชั่วคราวในรูท / ไดเรกทอรี จากนั้นอ่านจากไฟล์ชั่วคราว เนื่องจากไฟล์ CSV ของฉันที่ 101GB มีขนาดใหญ่กว่าพื้นที่ว่างที่เหลืออยู่บนรูทของฉัน / ฉันเห็นคำเตือนดิสก์เหลือน้อย แต่สิ่งนี้ไม่ถูกตรวจพบใน GUI และเครื่องมือที่ใช้คำสั่งจำนวนมากยกเว้นการตรวจสอบระบบที่ฉันจำได้ในภายหลัง เนื่องจากฉันทำงานบนฐานข้อมูล MySQL มากกว่า 300GB ฉันต้องย้ายไดเรกทอรีข้อมูล MySQL ไปยังดิสก์ภายในเครื่องอื่นและฉันกำลังนำเข้า CSV จากฮาร์ดดิสก์ภายนอก การคัดลอกไฟล์ CSV ขนาด 101GB ไปยังไดเรกทอรีข้อมูล MySQL ในดิสก์ภายในให้ฉันเรียกใช้LOAD DATA INFILEคำสั่งโดยไม่มีข้อผิดพลาดใด ๆ

ดังนั้นควรระวังLOCALตัวเลือกสำหรับไฟล์ CSV ที่ใหญ่กว่าพื้นที่ว่างในไดเรกทอรีรากของคุณ ตัวเลือก LOCAL ไม่ใช่ความคิดที่ดีสำหรับความอดทนของ SSD

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.