Bir csv dosyasını MySQL çalışma alanına nasıl aktarabilirim?


88

Bir CSV dosyam var. 1.4 milyon satırlık veri içeriyor, bu yüzden csv dosyasını Excel'de açamıyorum çünkü sınırı yaklaşık 1 milyon satır.

Bu nedenle, bu dosyayı MySQL çalışma tezgahına aktarmak istiyorum. Bu csv dosyası aşağıdaki gibi sütunlar içerir:

"Service Area Code","Phone Numbers","Preferences","Opstype","Phone Type"

MySQL tezgahında "kukla" olarak adlandırılan ve benzeri sütunlar içeren bir tablo oluşturmaya çalışıyorum.

ServiceAreaCodes,PhoneNumbers,Preferences,Opstyp,PhoneTyp. 

CSV dosyası adlandırılır model.csv. Tezgahtaki kodum şöyle:

LOAD DATA LOCAL INFILE 'model.csv' INTO TABLE test.dummy FIELDS TERMINATED BY ',' lines terminated by '\n';

ama gibi bir hata alıyorum model.CSV file not found


Bunu MySQL için dbForge Studio içe aktarma sihirbazında da yapabilirsiniz . Otomatik olarak böyle bir yolu bir tablo oluşturur prnt.sc/e5iqy1
devart

Yanıtlar:


139

Sanırım ENCLOSED BY cümlesini kaçırıyorsunuz

LOAD DATA LOCAL INFILE '/path/to/your/csv/file/model.csv'
INTO TABLE test.dummy FIELDS TERMINATED BY ','
ENCLOSED BY '"' LINES TERMINATED BY '\n';

Ve csv dosyasının tam yolunu belirtin

Veri Dosyasını Yükle - MySQL belgeleri


1
teşekkür ederim, bu komutta herhangi bir hata almıyorum. ancak model.csv dosyası bulunamadı gibi bir hata alıyorum. bu dosya sistem masaüstümde
saklanıyor

csv dosyası sistem masaüstümde saklanıyor
vps

5
GÜNCELLEME: Standart olmayan karakterlere sahip dizeleri içe aktarıyorsanız, "KARAKTER SETİ utf8" ihtiyacını şu ifadeye belirtmek yararlıdır: YEREL BİLGİ YÜKLE '/yol/to/file.csv' TABLO db_name.table_name KARAKTER SETİ utf8 TARAFINDAN SONLANDIRILAN ',' KAPSAYAN '"' satırları '\ n' ile sonlandırılır; Hedef tablo / sütunlar da utf-8
ılǝ

1
ayrıca LOCAL anahtar kelimesini de unutmamak gerekir, sorgunuz tam olarak doğru
Brij Raj Singh - MSFT

2
Mysql çalışma tezgahı 6.2 kullanılarak Windows 7'de "tür" çalıştı. Çift eğik çizgi kullanmak zorunda kaldım '//path//to//your//csv//file//model.csv've tek eğik çizgi içeren tüm alanlar kırıldı.
576i

69

Daha küçük veri kümeniz olması durumunda, bunu GUI ile elde etmenin bir yolu şudur:

  1. Bir sorgu penceresi açın
  2. SEÇİN * [tablo_adı]
  3. Menü çubuğundan İçe Aktar'ı seçin
  4. Sonuç Tablosunun sağ alt tarafındaki Uygula'ya basın

görüntü açıklamasını buraya girin

Referans: http://www.youtube.com/watch?v=tnhJa_zYNVY


13
Sadece bir NOT. Bu içe aktarma seçeneği yalnızca Windows makinelerinde mevcuttur. Eklentiler görünüşe göre hala .Net tabanlıdır, bu nedenle Linux veya Mac'te çalışmaz.
BrianC

8
İçe aktardıktan sonra Uygula'ya basmayı unutmayın.
Steve Pitchers

7
Dikkat edin, bu çok yavaş olabilir. 25.000 sıra yapmak birkaç saat sürdü
Rob Sedgwick

2
Sürenin uzunluğu donanıma çok bağlı görünüyor. Ev bilgisayarım 10K satırda tamamen tıkandı. İş bilgisayarım 85 saniyede yaklaşık 200 sütun içeren 243K satırı içe aktardı.
KathyA.

2
@BrianC Artık durum böyle görünmüyor, benim için Linux sürümünde görünüyor.
Jammerx2

21

SCHEMAS altındaki gezginde, şemanıza / veritabanınıza sağ tıklayın ve "Tablo Verilerini İçe Aktarma Sihirbazı" nı seçin

Mac için de çalışıyor.


Bu, csv'den yeni bir tablo oluştururken Ubuntu 18.04'te benim için çalıştı. Ancak bu yöntemi kullanarak mevcut bir tabloya veri ekleyemedim.
LP Whigley


1

Şu anda bir CSV'yi (MySQL Workbench kullanarak) tüm platformlarda içe aktarmak mümkün değildir ve söz konusu dosya MySQL sunucu ana bilgisayarıyla aynı ana bilgisayarda bulunmuyorsa tavsiye edilmez.

Ancak mysqlimport'u kullanabilirsiniz .

Misal:

mysqlimport --local --compress --user=username --password --host=hostname \
--fields-terminated-by=',' Acme sales.part_*

Bu örnekte mysqlimport "satış" adlı tüm dosyaların "part_" ile başlayan bir uzantı ile yüklenmesi talimatı verilmiştir. Bu, "bölme" örneğinde oluşturulan tüm dosyaları yüklemenin uygun bir yoludur. Ağ trafiğini en aza indirmek için --compress seçeneğini kullanın. --Fields-terminated-by = ',' seçeneği CSV dosyaları için kullanılır ve --local seçeneği gelen verilerin istemcide bulunduğunu belirtir. --Local seçeneği olmadan, MySQL veritabanı ana bilgisayarındaki verileri arayacaktır, bu nedenle her zaman --local seçeneğini belirtin.

AWS RDS belgelerinde konu ile ilgili yararlı bilgiler bulunmaktadır .


0

Sunucu uzak bir makinede bulunuyorsa, dosyanın yerel makinenizde değil, uzak makinede olduğundan emin olun.

Dosya, mysql sunucusunun bulunduğu makinede ise, mysql kullanıcısının dosyayı okuma / yazma iznine sahip olduğundan emin olun veya dosyayı mysql şema dizinine kopyalayın:

Benim ubuntu'daki durumumda: /var/lib/mysql/db_myschema/myfile.csv

Ayrıca, bu sorunla ilgili değil, ancak yeni satırlarla ilgili sorunlarınız varsa, sublimeTEXT kullanarak satır sonlarını WINDOWS biçimine değiştirin, dosyayı kaydedin ve yeniden deneyin.


0

Uzun zamandır beni gerçekten rahatsız ettiği için biraz zor görünüyor.

Sadece tabloyu açmanız gerekir ("Satır Seç - 10000 Sınırla" seçeneğine sağ tıklayın) ve yeni bir pencere açacaksınız. Bu yeni pencerede "içe aktarma simgesi" göreceksiniz.

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.