MySQL veritabanına bir excel dosyası nasıl alınır


90

Herhangi biri bir Microsoft Excel dosyasını bir MySQL veritabanına nasıl aktaracağını açıklayabilir mi?

Örneğin, benim Excel tablom şöyle görünüyor:

Country   |   Amount   |   Qty
----------------------------------
America   |   93       |   0.60

Greece    |   9377     |   0.80

Australia |   9375     |   0.80

MySQL forumlarında [bu konuya bir göz atabilirsiniz] [1]. İstediğinizi tam olarak nasıl yapacağınızı açıklar. [1]: forums.mysql.com/read.php?32,216343,216344#msg-216344
Kredns

1
Bu ücretsiz yardımcı program, excel elektronik tablolarını mysql tablolarına aktarmayı hızlı ve kolay hale getirir panofish.net/…
panofish

Yeni ve farklı bir fikir için +1. İşlem delicesine yavaştır, önce dosyadaki her satırı okur ve sonra herhangi bir şey yükler. 5,2 bin satırı içe aktarmak yaklaşık 15 dakika sürdü
Fr0zenFyr

Bazı e-tablolar için, sütun ve satırların sayısı nedeniyle yavaş olabilir. Ancak, elektronik tabloyu okumak için kullanılan microsofts com-nesne kitaplığını suçluyorum. Programım elektronik tabloyu kitaplığın izin verdiği kadar hızlı okuyor. Mysql eklentileri çok hızlı. İçe aktarmadan önce gereksiz sütunları ortadan kaldırabilirseniz ... bu yardımcı olabilir.
panofish

5173 satırda 14 sütunum vardı. Gereksiz işlemden kaçınmak için tüm boş sütunları / satırları zaten seçmiş ve silmiştim. Kullandığım sistem 2.5G RAM ve core2duo işlemciye sahipti, çalışan pek çok işlem yoktu, performans sekmesi toplamda% 65 kullanım gösterdi ve hala kullanılmayan çok fazla RAM vardı. Yani, sanırım donanımı suçlamazdım ama sizin de dediğin gibi MS com nesneleri berbat. MS acemiler için hayat kurtarıcı gibi görünen saçmalıkları ne zaman durduracağını bilmiyorum. MS ürünleri için fazladan zırvalık yapmaktan bıktım.
Fr0zenFyr

Yanıtlar:


46
  1. Bazı metin formatlarına aktarın. En kolayı muhtemelen sekmeyle ayrılmış bir sürüm olacaktır, ancak CSV de çalışabilir.

  2. Veri yükleme özelliğini kullanın. Bkz. Http://dev.mysql.com/doc/refman/5.1/en/load-data.html

  3. Sekmeyle ayrılmış veriler için iyi bir örnek vereceğinden, sayfanın yarısına kadar bakın:

    '\ T' TARAFINDAN KAPSANAN '' TARAFINDAN KAÇILAN ALANLAR

  4. Verilerinizi kontrol edin. Bazen alıntı veya kaçışta sorunlar vardır ve kaynağınızı ayarlamanız, içe aktarma komutunuz gerekir - ya da SQL aracılığıyla sonradan işlemek daha kolay olabilir.


2
CSV'ye aktarırken, [en azından] excel 2013, yerel ayara bağlı (işletim sisteminin bölgesel ayarlarına göre) 0 değerler için ondalık ayırıcı kullanarak (ör. ',', Tanımlandığı gibi 'kullanılırken', ') VBA çıkışlı çift tırnak kullanarak verileri zehirlemeye çalışır. diğer tüm değerler için hücre özelliklerinin ayırıcısında.
CSV'den

1
Bu yordamın önce uygun alanlarla tabloyu oluşturmanızı gerektirdiğini unutmayın.
LarsH

Tek sorun bu değil. Bu yordamın excel'deki bir hücre içindeki satır başı ile doğru şekilde ilgilenip ilgilenmediğinden emin değilim.
Raul Luna

1
@ afk5min "zehirli veri" ile ne demek istiyorsun ??? Tüm bu etiketler ve işaretlemeler, açıkça bunu başka bir MS ürününe
aktaracak

1
* "En zor yolu" kastettiniz, en kolay değil
Revious

104

Bunu yapabilen sqlizer.io adlı basit bir çevrimiçi araç var .

Sqlizer.com'dan ekran görüntüsü

Bir XLSX dosyası yüklersiniz, bir sayfa adı ve hücre aralığı girersiniz ve tüm verilerinizi bir MySQL veritabanına aktarmak için bir CREATE TABLE ifadesi ve bir grup INSERT ifadesi oluşturur.

(Sorumluluk reddi: SQLizer'ın çalıştırılmasına yardımcı oluyorum)


23
Bu aracın var olduğunu bilmek güzel, ancak onu kullanmanız gerekip gerekmediğini kesinlikle düşünün. Elektronik tablonuz hassas veriler içeriyorsa (örn. Kullanıcı e-postaları, şifreler, cc bilgileri, tıbbi bilgiler vb.) Bu iyi bir fikir olmayabilir. Bu site verilerinizi saklamayabilir ve güvenli olabilir, ancak bunu kesin olarak bilmenizin bir yolu yoktur.
Chris Schmitz

1
@DivyeshJesadiya 5000 satıra kadar her şey için ücretsizdir. Bundan sonra bir aylık kullanım için 10 ABD doları ödemeniz gerekir.
d4nt

@doxsi bana iyi görünüyor, bununla ilgili ne tür bir probleminiz oldu?
d4nt

@ChrisSchmitz, güvenlik konusunda çok ihtiyatlıyız ve son zamanlarda SQLizer'ı nasıl çalıştırdığımız hakkında bir blog yazısı yazdık blog.sqlizer.io/posts/privacy-at-sqlizer
a_good_swan

Çalışır, Excel formatında dikkat edin, xlt kabul edilmezken xls kabul edilir.
Emanuel Pirovano

42

Aşağıda, elektronik tablo verilerini herhangi bir ekstra yazılıma dayanmayan bir MySQL veritabanına aktarmak için başka bir yöntem bulunmaktadır. Excel tablonuzu salesadlı MySQL veritabanının tablosuna aktarmak istediğinizi varsayalım mydatabase.

  1. İlgili hücreleri seçin:

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

  2. Mr. Data Converter'a yapıştırın ve çıktıyı MySQL olarak seçin:

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

  3. Tablo adını ve sütun tanımlarını, oluşturulan çıktıdaki gereksinimlerinize uyacak şekilde değiştirin:

CREATE TABLE sales (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  Country VARCHAR(255),
  Amount INT,
  Qty FLOAT
);
INSERT INTO sales
  (Country,Amount,Qty)
VALUES
  ('America',93,0.60),
  ('Greece',9377,0.80),
  ('Australia',9375,0.80);
  1. MySQL Workbench kullanıyorsanız veya mysqlkomut satırından zaten oturum açtıysanız, üretilen SQL ifadelerini doğrudan 3. adımdan yürütebilirsiniz. Aksi takdirde, kodu bir metin dosyasına (örneğin import.sql) yapıştırın ve bu komutu bir Unix kabuğundan yürütün:

    mysql mydatabase < import.sql

    Bir SQL dosyasından içe aktarmanın diğer yolları bu Yığın Taşması cevabında bulunabilir .


1
Bu en kolay yoldu. Teşekkürler! SQL'deki fazladan Birincil Anahtar 'ID'yi kaldırmayı ve seçtiğiniz bir AUTO artışını yerleştirmeyi unutmayın.
Fandango68

29

Bir excel dosyasını bir MySQL veritabanına değişen derecelerde karmaşıklık ve başarı ile içe aktarmanın aslında birkaç yolu vardır.

  1. Excel2MySQL . Excel verilerini MySQL'e aktarmanın en kolay ve en hızlı yolu. Excel'in tüm sürümlerini destekler ve Office yüklemesi gerektirmez.

    Excel2MySQL ekran görüntüsü

  2. LOAD DATA INFILE : Bu popüler seçenek belki de en teknik olanıdır ve MySQL komutunun yürütülmesi konusunda biraz anlayış gerektirir. Uygun boyutlu VARCHAR alan türlerini yüklemeden ve kullanmadan önce tablonuzu manuel olarak oluşturmanız gerekir. Bu nedenle, alan veri türleriniz optimize edilmemiştir. LOAD DATA INFILE, 'max_allowed_packet' boyutunu aşan büyük dosyaları içe aktarmada sorun yaşıyor. Özel karakterleri ve yabancı unicode karakterleri içe aktarmada sorunlardan kaçınmak için özel dikkat gereklidir. Burada test.csv adlı bir csv dosyasını içe aktarmak için kullandığım yeni bir örnek var.

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

  3. phpMyAdmin : Önce veritabanınızı seçin, ardından İçe Aktar sekmesini seçin. phpMyAdmin, tablonuzu otomatik olarak oluşturur ve VARCHAR alanlarınızı boyutlandırır, ancak alan türlerini optimize etmez. phpMyAdmin, 'max_allowed_packet' boyutunu aşan büyük dosyaları içe aktarmada sorun yaşıyor.

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

  4. MySQL for Excel : Bu, Oracle'ın sunduğu ücretsiz bir Excel Eklentisidir. Bu seçenek biraz sıkıcıdır çünkü bir sihirbaz kullanır ve içe aktarma işlemi büyük dosyalar için yavaş ve hatalıdır, ancak bu VARCHAR verisi olan küçük dosyalar için iyi bir seçenek olabilir. Alanlar optimize edilmemiştir.

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


Merhaba @panofish, her gün güncellenen bir excel'im var. Tüm tablo yerine sadece güncellenmiş verileri mysql veritabanı tablosuna koymak istiyorum. (yani) tabloya günde bir satır koyun. Bu nasıl yapılabilir?
Arun Raja

Bu çözümlerin tümü, bir elektronik tablonun tamamını yüklemeye ve MySQL tablonuzu değiştirmeye veya tabloya eklemeye odaklanır. Değişiklikler yeni kayıtlar ekliyor mu yoksa mevcut kayıtları değiştiriyor mu?
panofish

Sadece değerlerin üzerine yazıyorlar. Ancak, yalnızca tarihe dayalı olarak veritabanında mevcut olmayan değerlerin eklenmesini istiyorum. Bu, her gün birçok satır eklemek yerine yalnızca birkaç satır ekleyerek performansı artırabilir.
Arun Raja

2
Excel2MySQL aracı yalnızca veritabanı komut dosyasını oluşturma olanağına sahip olmalıdır :(
joseantgv

PHPMyAdmin en kolay ve en hızlı olanıydı.
Amir Hajiha

2

Tüm bu kurulumun sizde olup olmadığından emin değilim, ama benim için PHP ve MYSQL kullanıyorum. Bu yüzden bir PHP sınıfı PHPExcel kullanıyorum. Bu, hemen hemen her formatta bir dosyayı alır, xls, xlsx, cvs, ... ve daha sonra okumanıza ve / veya eklemenize izin verir.

Yani yaptığım şey excel'i bir phpexcel nesnesine yüklemek ve ardından tüm satırlar arasında döngü yapmak. İstediğim şeye dayanarak, excel dosyasındaki verileri tabloma eklemek için basit bir SQL ekleme komutu yazıyorum.

Ön uçta bu küçük bir iştir, ancak sadece mevcut kod örneklerinden bazılarının ince ayarlanması meselesidir. Ancak çevirdiğinizde, içeri aktarmada değişiklik yapmak basit ve hızlıdır.


1

en iyi ve en kolay yol, oracle'ın ücretsiz bir uygulaması olan "MySQL for Excel" uygulamasını kullanmaktır. bu uygulama, verileri mysql'e aktarmak ve almak için excel'e bir eklenti ekledi. Eğer o indirebilirsiniz burada


1

Verileri içeri aktarmak için metin dosyalarını kullanırken, alıntılarla ve Excel'in sayıları nasıl biçimlendirdiğiyle ilgili sorunlar yaşadım. Örneğin, Excel yapılandırmamda nokta yerine ondalık ayırıcı olarak virgül kullanıldı.

Şimdi MySql tablomu bağlantılı tablo olarak açmak için Microsoft Access 2010 kullanıyorum . Orada Excel'den Access'e hücreleri kopyalayıp yapıştırabilirim.

Bunu yapmak için önce MySql ODBC sürücüsünü kurun ve bir ODBC bağlantısı oluşturun. . Ardından erişimde, "Dış Veri" sekmesinde, "ODBC Veritabanı" iletişim kutusunu açın ve ODBC bağlantısını kullanarak herhangi bir tabloya bağlanın.

MySql Workbench'i kullanarak Excel verilerinizi kopyalayıp MySql Workbench'in sonuç ızgarasına da yapıştırabilirsiniz. Bu cevapta detaylı talimat verdim .



0

Excel'i MySQL'e aktarmak için oldukça sezgisel bir GIU olan DocChow'u kullanabilirsiniz ve çoğu yaygın platformda (Linux dahil) ücretsizdir.

Özellikle tarih, tarih saat veri türleri hakkında endişeleriniz varsa, DocChow veri türlerini kolayca işler. Tek bir MySQL tablosuna aktarmak istediğiniz birden çok Excel elektronik tablosuyla çalışıyorsanız, DocChow kirli işi yapar.


0

1. Adım CSV dosyanızı oluşturun

Adım 2 mysql sunucunuza giriş yapın

     mysql -uroot -pyourpassword 

Adım 3 csv dosyanızı yükleyin

     load data local infile '//home/my-sys/my-excel.csv' into table my_tables fields terminated by ',' enclosed by '"' (Country, Amount,Qty);

0

Bir başka kullanışlı araç ve MySQL ön uç değişimi olarak MySQL için Toad . Ne yazık ki, artık Quest tarafından desteklenmiyor , ancak çoğu dosya türüne hitap eden IMPORT ve EXPORT sihirbazlarıyla MySQL için mükemmel bir IDE.


0

En hızlı ve en basit yol, XLS'yi ODS (açık belge spreasheet'i) olarak kaydetmek ve PhpMyAdmin'den içe aktarmaktır. görüntü açıklamasını buraya girin


0

Toad for MySQL kullanıyorsanız , bir dosyayı içe aktarmak için adımlar aşağıdaki gibidir:

  1. MySQL'de içe aktarılacak dosyanın sütunları ile aynı sütunlara sahip bir tablo oluşturun.
  2. şimdi tablo oluşturuldu, gidin> Araçlar > İçe Aktar > İçe Aktarma Sihirbazı
  3. şimdi içe aktarma sihirbazı iletişim kutusunda İleri'yi tıklayın.
  4. Dosya Ekle'yi tıklayın , göz atın ve içe aktarılacak dosyayı seçin.
  5. doğru dilimlemeyi seçin. (.csv dosyası için ayrılmış ",")
  6. İleri'ye tıklayın, eşlemenin doğru yapılıp yapılmadığını kontrol edin.
  7. İleri'yi tıklayın, "Tek bir mevcut tablo" radyo düğmesini seçin, ayrıca Tabloların açılır menüsünden eşlenecek tabloyu seçin.
  8. İleri'ye tıklayın ve işlemi tamamlayın.
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.