Nasıl mysql postgresql dönüştürmek için? [kapalı]


14

Umutsuzca postgresql için büyük bir mysql veritabanı dönüştürmek için bir dönüşüm aracı arıyorum. Ben araç / komut dosyası olması gerekir:

  • Bedava
  • Linux altında çalışır
  • Kullanımı basit ve buggy değil
  • Aslında işe yaradığını denediniz ve onayladınız
  • Tercihen, Java veya Ruby ile yazılmamış

Burada listelenen farklı araçları denedim , ancak hiçbiri benim için çalışmadı.

Şimdiden teşekkür ederim.


PostgreSQL uzmanı değilim, hala kendimi öğreniyorum. Cevabımı kaldırdım. Ancak, başka bir kişi tarafından gönderilen postgresql ile mysqldump kullanımı hakkında başka bir soru var: dba.stackexchange.com/q/9792/877 . Umarım yardımcı olur !!!
RolandoMySQLDBA

1
Java ile yazılmış araçlarda sorun nedir? Ve hepsiyle tam olarak neyin çalışmadığını açıklarsanız bu size yardımcı olabilir .
a_horse_with_no_name

Yanıtlar:


7

Çok farklı iki DBMS arasında geçiş yapmak , verileri taşımaktan çok daha fazlasını gerektirir . Ancak verilerin taşınması genellikle en kolay kısımdır.

Ben denedim yolu, hangi ücretsiz ve çalıştığını onaylamak:

  • mysql şeması oluştur sadece dökümü
  • Bir metin düzenleyici ve çok sayıda arama ve değiştirme kullanarak SQL'i ayarlayın
  • dönüştürülmüş SQL'i Postgres'de çalıştır
  • MySQL'den düz bir metin dökümü oluşturun (örn. CSV veya başka bir sınırlı format)
  • PostgreSQL'in COPY komutunu kullanarak verileri içe aktarın

MySQL'in yasa dışı verileri kabul etme davranışına güveniyorsanız verileri içe aktarmak gerçekten zor olabilir (31 Şubat gibi)

Benim tahminim, bunun bir araç aramaktan, bir demetini değerlendirmekten ve sonra seçtiğiniz aracı anlamaya çalışmaktan daha hızlı olacağıdır. Ama ne tür bir "büyük" den bahsettiğinize bağlıdır. Büyük yüzlerce tablo ise bu mümkün olmayabilir. Büyük yalnızca satır sayısına atıfta bulunuyorsa, bu muhtemelen bunu yapmanın en hızlı yoludur.

Liquibase , SchemaSpy veya WbSchemaReport gibi bir veritabanı şemasını DBMS bağımsız (XML) biçiminde dökebilen bazı araçlar vardır . Liquibase muhtemelen kullanımı en kolay olanıdır. Diğerleri, oluşturulan XML'i dönüştürmek için XSLT'yi yazmak / genişletmek için bazı manuel çalışma gerektirecektir.

MySQL'de tetikleyiciler ve saklı yordamlar kullanıyorsanız, daha sonra büyük bir manuel sabitleme gerektirmeden bunları çevirebilecek herhangi bir otomatik araç olacağına inanmıyorum - ve sonra oluşturulan prosedürler muhtemelen hedef DBMS'nin gelişmiş özelliklerini kullanmaz .


6

Son zamanlarda yapmak zorunda kaldım ve bir araç aramak ve onunla bir şeyler yapmak çok uzun süreceği için vim ve ikame-foo ile el başına yaptım

  • yerine INT NOT NULL AUTO_INCREMENT(veya böyle bir şey) ileSERIAL
  • Bir halinde, ilgili everythig dizesini değiştirin TEXT(kullanarak bir hız farkı TEXT, VARCHARveya benzeri)
  • Bu f kurtulmak *** ing backticks `
  • Postgres'de depolama motoru yok, bu yüzden kaldırın ENGINE InnoDB(veya her neyse)
  • Kaldırmak UNSIGNED
  • her BLOB alanı BYTEA
  • dizeler tek tırnak işareti kullanır 've başka hiçbir şey kullanmaz
  • 9.1'den başlayarak bir yerde dize birleştirme kullanırsanız carecul olun, Postgres desteği CONCATstandart olmayan dize birleştirme için bir yedek olarak , 9.1'den önce kullanılarak yapıldı 'string' || ' string'
  • herhangi bir prosedür kodunu yeniden yazın ...
  • ayrılmış adların (örn. tablo, ad, ...) yanı sıra büyük harfli adlara dikkat edin. Çift tırnak içine alınmaları gerekir"
  • Dizine eklenen sözdizimi değişiklik göstermediği için hemen hemen aynı olmalıdır
  • Unuttuğum her şey için, bu konuyla ilgili wikibooks'a göz atın

Bu mermilerin her biri tek bir ikame ile yapılmalıdır.

Şemayı ve verileri ayrı ayrı ihraç ettim . INSERTBunun yerine s kullandığınızdan emin olun COPY. Herhangi bir fance işi yoksa, veriler (neredeyse) hiçbir temizlik gerektirmemelidir. Her şeyin açık olduğundan emin olun UTF-8. 2 ayrı dosyayla, şema daha yönetilebilir hale gelir ve düzenlenecek 1GB dosyanız yoktur.

Şemayı yüklerken, bir hatanın olduğu yerde oldukça ayrıntılı bilgiler alırsınız, bu nedenle hata ayıklama oldukça basit olmalıdır.


Merhaba, MySQL BLOB alan verileri PostgreSQL BYTEA dönüştürmek nasıl? Ekle sql olarak Mysql veri dökümü, ben PostgreSQL veri yükleyemez bulundu.
francs

1

Bunu oraya atıyorum, hiç denemedim, ama Tungesten Replicator ne istersen yapabilir. Öncelikle bir çoğaltma aracıdır, ancak en azından veri parçasında size yardımcı olabilecek bir önyükleme işlemi olabileceğini düşünüyorum.

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.