MySQL içe aktarma csv dosyası ERROR 13 (HY000): /path/file.csv statüsü alınamıyor (Errcode: 2)


16

MySQL (5.5.34) / Linux (Ubuntu 12.04 LTS) için yeni başlayan biriyim `

Tek bir tablo ile basit bir veritabanı oluşturduk. Veriyi 'data_test.csv dosyası üzerinden içe aktarmaya çalışırken bir hata mesajı 13 belirir.

Terminal'den alıntılar:

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> 

Not: LOAD DATA LOCAL INFILE dosyasında LOCAL kullanılıyorsa bir hata görüntülenir: ERROR 1148 (42000): Bu komutun MySQL sürümünde kullanılmasına izin verilmiyor

Yanıtlar:


26

Umarım kullanıyorsun LOAD DATA INFILE.

LOAD DATA LOCAL INFILEBunun yerine kullanmayı deneyin LOAD DATA INFILE.

Başka bir sorun da olabilir, lütfen aşağıdaki bağlantıları ziyaret edin: MySQL LOAD DATA.

MySQL'e giriş yaptığınızda aşağıdakileri yapın,

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;

Şimdi CSV'nizi kullanarak yükleyin, güvenlik nedeniyle yeni MySQL sürümlerini yüklemeden önce LOAD DATA LOCAL INFILEkullanmamız gerekir .--local-infileCSV


3

Yukarıdaki yanıt OP için sorunu çözmüş olsa da, aynı sorunu nasıl çözdüğüm konusunda katkıda bulunmam gerektiğini hissediyorum. Hata 13, yanlış veya yetersiz dosya izinlerinden kaynaklanır. Benim durumumda bu SELinux oldu. SELinux kullanıyorsanız, MySQL için izin verilen dizinlere veri dosyası yolunuzu ekleme düzeltmesi şu cevapta bulunabilir: /programming//a/3971632/1449160


2

MySQL, CSV dosyasının erişebileceği bir dizinde olmasını gerektirir.

Dosyanızı "/ home / stockrecdb /" konumundan "/ tmp" konumuna taşımak da sorunu çözebilir.


1

Abdul Manaf'ın önerdiği seçenek Error 13 (HY000)kullanılarak çözülen bu tam hata mesajını aldım LOCAL. Ancak 101GB boyutunda bir CSV dosyası ile takıldım. Bu CSV dosyasını içe aktarmaya çalışırken, sistem DÜŞÜK Disk Alanı Uyarısı bildirdi ve içe aktarma görevi tamamlanmadı. Sinir bozucu bir şekilde, disk yardımcı programı Gui araçları bile df -hkomutu, kök dizinimin 85GB'dan fazla disk alanına sahip olduğunu gösterdi.

Sonra LOCALseçeneğin CSV dosyasını kök / dizinde geçici bir yere kopyaladığını öğrendim . Sonra geçici dosyadan okur. 101 GB'lık CSV dosyam kökümde kalan boş alandan daha büyük olduğundan / düşük disk uyarısı görüyordum, ancak bu daha sonra tanıdığım sistem monitörü dışında birçok GUI ve komut tabanlı araçta algılanmadı. 300GB'dan fazla MySQL veritabanı üzerinde çalıştığım için, MySQL veri dizinini başka bir dahili diske taşımak zorunda kaldım ve CSV'yi harici bir sabit diskten içe aktarıyordum. 101GB CSV dosyasını dahili diskteki MySQL veri dizinine kopyalamak LOAD DATA INFILEkomutu herhangi bir hata mesajı vermeden çalıştırmama izin veriyor .

Bu nedenle LOCAL, kök dizininizdeki boş alandan daha büyük CSV dosyaları seçeneğinin farkında olun. YEREL seçeneği SSD'nin dayanıklılığı için de iyi bir fikir değildir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.