Impor file csv MySQL ERROR 13 (HY000): Tidak dapat memperoleh stat dari /path/file.csv (Errcode: 2)

16

Saya seorang pemula mutlak untuk MySQL (5.5.34) / Linux (Ubuntu 12.04 LTS) `

Saya telah membuat database sederhana dengan satu tabel. Ketika mencoba mengimpor data ke dalamnya melalui file 'data_test.csv, pesan kesalahan 13 muncul.

Keluar dari Terminal berikut:

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> 

Catatan: jika menggunakan LOCAL dalam LOAD DATA LOCAL INFILE muncul kesalahan: ERROR 1148 (42000): Perintah yang digunakan tidak diizinkan dengan versi MySQL ini

Guillermo
sumber

Jawaban:

26

Saya harap Anda menggunakan LOAD DATA INFILE.

Coba gunakan LOAD DATA LOCAL INFILE bukan LOAD DATA INFILE.

Masalah lain mungkin ini, silakan kunjungi tautan berikut: MySQL LOAD DATA.

Ketika Anda login di MySQL lakukan seperti di bawah ini,

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;

Sekarang muat menggunakan CSV Anda LOAD DATA LOCAL INFILE, kami perlu menggunakan --local-infilesebelum memuat CSVdi vesrsions MySQL baru, karena alasan keamanan.

Abdul Manaf
sumber
3

Meskipun jawaban di atas memecahkan masalah untuk OP, saya merasa saya harus berkontribusi mengenai bagaimana saya memecahkan masalah yang sama. Kesalahan 13 disebabkan oleh izin file yang salah atau tidak memadai. Dalam kasus saya ini ke SELinux. Jika Anda menggunakan SELinux, perbaikan untuk menambahkan jalur file data Anda ke direktori yang diizinkan untuk MySQL dapat ditemukan dalam jawaban ini: /programming//a/3971632/1449160

Sam_Butler
sumber
2

MySQL mengharuskan file CSV berada di direktori yang dapat diakses.

Pindahkan file Anda dari "/ home / stockrecdb /" ke "/ tmp" juga dapat menyelesaikan masalah.

Bir Polor
sumber
1

Saya memiliki pesan kesalahan yang tepat ini Error 13 (HY000)yang diselesaikan dengan menggunakan LOCALopsi yang disarankan oleh Abdul Manaf. Namun, saya terjebak dengan file CSV ukuran 101GB. Saat mencoba mengimpor file CSV ini, sistem melaporkan Peringatan Ruang Disk RENDAH dan tugas impor tidak selesai. Frustasi, utilitas alat Gui bahkan df -hperintah menunjukkan bahwa direktori root saya memiliki lebih dari 85GB ruang disk yang tersisa.

Kemudian saya mengetahui bahwa LOCALopsi menyalin file CSV ke tempat sementara di direktori root /. Kemudian ia membaca dari file sementara. Karena file CSV saya 101GB lebih besar dari ruang kosong yang tersisa di root saya / saya melihat peringatan disk rendah, bagaimanapun, ini tidak terdeteksi di banyak GUI dan alat berbasis perintah kecuali monitor sistem yang saya kenali kemudian. Karena saya bekerja pada database MySQL lebih dari 300GB, saya harus memindahkan direktori data MySQL ke disk internal lain dan saya mengimpor CSV dari hard disk eksternal. Menyalin file CSV 101GB ke dalam direktori data MySQL di disk internal, biarkan saya menjalankan LOAD DATA INFILEperintah tanpa pesan kesalahan.

Jadi berhati-hatilah dengan LOCALopsi untuk file CSV yang lebih besar lebih besar daripada ruang kosong direktori root Anda. Opsi LOCAL juga bukan ide yang baik untuk daya tahan SSD.

Narnia_Optimus
sumber