.bak
Bir SQL Server 2005 dökümü bazı büyük dosyaları var .
Bunları SQL Server kullanmadan PostgreSQL, MySQL veya düz metin dosyalarına geri yükleyebilir miyim?
Açık kaynak kodlu bir çözüm en faydalı yöntem olacaktır.
.bak
Bir SQL Server 2005 dökümü bazı büyük dosyaları var .
Bunları SQL Server kullanmadan PostgreSQL, MySQL veya düz metin dosyalarına geri yükleyebilir miyim?
Açık kaynak kodlu bir çözüm en faydalı yöntem olacaktır.
Yanıtlar:
İşte önerim:
VM yedeklemeyi tutmak için yeterli alana sahipse de geri yüklemek için yeterli alana sahip değilse , aynı adla Red-Gate ürününün deneme sürümünü kullanarak bir "sanal geri yükleme" gerçekleştirebilirsiniz ( yedek dosyasını geri yüklenmiş gibi). Aksi takdirde, veritabanını normal şekilde geri yükleyin .
Veritabanı kullanılabilir olduğunda (normal geri yükleme veya sanal geri yükleme yoluyla), şema ve veriler için komut dosyaları aşağıdaki şekilde oluşturabilirsiniz:
Alternatif olarak , CSV dosyalarına veya benzerine veri ayıklamak için bcp yardımcı programıyla çalışmayı deneyebilirsiniz , ancak bu tabloyu tek tek yapmanız veya bazı akıllı komut dosyaları (PowerShell, T-SQL, C # / SMO vb.) Kullanmanız gerekir. ) sizin için tüm bcp komutlarını oluşturmak için. CSV dosyalarına girdikten sonra, verileri Postgres'e toplu olarak yüklemek önemsiz olmalıdır (ancak yine de tabloları oluşturmak için biraz çalışmanız olacaktır).
Son bir öneri olarak, .bak dosyası çok büyük değilse ve veriler gizli değilse, sizin için ihtiyacınız olan formatta dosyalar oluşturmaya çalışmaktan çok daha fazlasıyım. Boşluklu Windows VM'leri var, sorun .BAK dosyasını alabileceğim bir yere almak - özellikle dosya paylaşım hizmetleri desteğinin çoğundan daha büyükse.
Maalesef, dosyanın içindekiler hakkında derin bilgiye sahip olmadan bir .bak dosyasının içeriğine erişmenin bir yolu yoktur. Burada bu bilgilere özel olabilecek bir kişi düşünebilirim, ama söylenen kişinin size bunu nasıl yapacağınızı söyleyip söylemeyeceğini söyleyemem
Bu nedenle, bir SQL Server örneği yüklemeniz gerekecek. Ayrıca, bu örneğin Postgres sunucunuzla konuşabilmesini de sağlamanız gerekir (pg_hba.conf)
İlk yol Postgres Windows ODBC sürücüsünü kurmak ve pg sunucusuna bir bağlantı kurmak olacaktır. Daha sonra bir veri geçişini kodlamak için SSIS kullanabilirsiniz. Bu rotaya gidecekseniz, veritabanı sunucusunu kurarken SSIS'yi yüklemenizi öneririm.
Diğer seçenek ODBC sürücü bağlantısını da içerir, ancak SQL Server'da bağlantılı bir sunucu oluşturabilir ve ekleri pg Server'da SQL Server üzerinden çalıştırabilirsiniz. Bu soruya daha önce burada cevap verdim, bu yüzden bulmak zor olmamalı.
DÜZENLE
Aaron'un yorumunu dahil etmek için, SQL Server'ı çalıştırıp çalıştırdıktan sonra, verileri farklı yollarla düz dosyalara aktarabilirsiniz. Bu yolu seçerseniz bana bildirin ve bunu yapmanın birkaç yolunu göndereceğim
DÜZENLE (2):
Önceden yapıları oluşturmak istemiyorsanız, bağlantılı sunucu işlemi en iyi yaklaşım olmayabilir. Bu benim tercih ettiğim yöntem, ama genellikle her iki tarafta da yapıya sahibim.
Bu Aaron Bertrand'ın cevabını en iyi cevap olarak bırakır. Veri türlerine ek olarak ( IDENTITY
vs SEQUENCE
, postgres'in NVARCHAR
kodlamayı veritabanının kendisinde ayarladığınızdan beri hiçbir şey bilmediğini lütfen unutmayın ). Postgres hiçbir şey bilmiyor CREATE CLUSTERED INDEX
( CLUSTER
sizin için işe yarayabilir). Son olarak, yorumlarda uzamsal veriler kullanacağınızı gördüğüm için postgresql CREATE SPATIAL INDEX
sözdizimi hakkında hiçbir şey bilmiyor . Postgis yüklemeniz veINDEXTYPE
Uzamsal dizinler oluşturmak anahtar kelimeyi . Son olarak, şemaları uygun şekilde ele aldığınızdan emin olun.
Uzun lafın kısası: