SQL Server olmadan bir SQL Server .bak dosyalarını geri yükleyebilir miyim?


16

.bakBir 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.


1
"Sadece bu görev için bunu yapmamayı tercih ederim." Neden olmasın? Yapmaya çalıştığın şeyi yapmanın yolu bu.
swasheck

Başka bir şeye geri dönmek bir anlam ifade ediyor mu? Elde edilen verilerle ne yapmak istiyorsunuz?
Philᵀᴹ

1
@Phil Ortaya çıkan verileri bir PostgreSQL veritabanına, hatta düz metin dosyalarına taşımak istiyorum.
Abe

1
@swasheck Alıntılanan soruyu kaldırmış gibi görünen alıntıyı kaldırdım. Ama sorunuzu cevaplamak için, çünkü onu nasıl kullanacağım hakkında hiçbir fikrim yok ve sunucum Linux çalıştırıyor. Kullanılabilir bir windows dizüstü bilgisayarda yeterli alan yok.
Abe

2
Bu şimdiye kadar sahip olmadığımız bilgidir :). Ekstra bilgi için teşekkürler - bir plan var
swasheck

Yanıtlar:


19

İşte önerim:

  1. Windows çalıştıran ve yedeklemeye yetecek kadar disk alanına sahip bir sanal makine oluşturun. Yedekleme dosyasını buraya kopyalayın. Sanal makineler oluşturma yeteneğiniz yoksa, Oracle VirtualBox gibi ücretsiz ürünlerle bunu yapabilirsiniz .
  2. SQL Server'ın değerlendirme sürümünü indirin ve yükleyin . Hem veritabanı motorunu hem de Yönetim Araçlarını - Tamamla'yı eklediğinizden emin olun.
  3. 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 .

  4. 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:

    • Management Studio'yu açın ve örneğinize bağlanın.
    • Nesne Gezgini'ni açın.
    • Yeni geri yüklenen veritabanınızı sağ tıklayın, Görevler> Komut Dosyaları Oluştur ... seçeneğini belirleyin.
    • İleri'yi, İleri'yi tıklayın
    • "Komut Dosyası Seçeneklerini Seç" sayfasında aşağı kaydırın ve "Komut Dosyası Verileri" ni Doğru olarak ayarlayın
    • Sonrakine tıkla
    • İlgili tüm nesneleri kontrol edin ve İleri'yi tıklayın
    • İstediğiniz tabloları kontrol edin ve İleri'yi tıklayın
    • Bir dosyaya komut dosyası seçin. Şimdi SQL Server insert sözdizimini kullanarak tüm nesnelerinizi ve verilerinizi içeren bir dosyaya sahip olacaksınız, Postgres için çalışan bir formatta almak için çıktı ile oynamanız gerekecek (küçük sözdizimi farklılıklarına özel değilim).

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.


+1 Bilgisayara bindikten sonra bcp yöntemini önerecektim. Bazı gotchas tablo sınırlayıcılar, IDENTITY (sekans, pg olarak), nvarchar, sadece birkaç isim. Aksi takdirde, düzenleme bölümünde önerdiğim şey budur (sans Red-Gate).
44'te swasheck

8, 20GB .bak dosyaları vardır ve yardımcı olabilirseniz harika olur, ancak lütfen gis.se, gis.stackexchange.com/q/28281/3218 ve gis.stackexchange.com/q/28257 ile ilgili sorulara bakın. / 3218 USDA Topraklar Veritabanı (SSURGO) hakkında. Simülasyon modellemesi için bu verilere otomatik bir şekilde erişmek şu anda çok zordur. Bu verilerin daha kullanışlı bir yapıda olması bilime büyük fayda sağlayacaktır. Sunucumdan indirebilirsiniz. Veriler gizli değildir, herhangi biri uzantı ajanından 50 $ / CD veya 100 $ / DVD veya daha düşük bir fiyata alabilir.
Abe

GIS.SE'deki verilerin nasıl elde edileceği hakkında cevaplarınız var gibi görünüyor. Gittim ve bu sitelere baktım ama nerede bir SQL Server yedek olduğunu belirttiklerini görmüyorum. Bu dosyaları nasıl / nereden edindiniz?
31'de swasheck

7

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 ( IDENTITYvs SEQUENCE, postgres'in NVARCHARkodlamayı 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( CLUSTERsizin için işe yarayabilir). Son olarak, yorumlarda uzamsal veriler kullanacağınızı gördüğüm için postgresql CREATE SPATIAL INDEXsözdizimi hakkında hiçbir şey bilmiyor . Postgis yüklemeniz veINDEXTYPEUzamsal dizinler oluşturmak anahtar kelimeyi . Son olarak, şemaları uygun şekilde ele aldığınızdan emin olun.

Uzun lafın kısası:

  1. Aaron Bertrand'ın yöntemini kullanarak komut dosyaları ve veriler oluşturun (muhtemelen tablo düzeyine bağlı kalacağım)
  2. DDL dizinini not edin (hala geçerliyse), ancak eklemeyin
  3. Yapı ve veriler oluşturulduktan sonra postgres üzerinde dizinler oluşturun

3
Postgres ile konuşmak için SQL Server'ı yapılandırmanız gerektiğini düşünmüyorum. SQL Server yüklendikten sonra, Postgres'in anlayacağı çeşitli biçimlere veri çıkarabileceğinizden eminim.
Aaron Bertrand

Özür. Postgres'i harici bağlantıları kabul edecek şekilde yapılandırmanız gerektiğini kastediyordum (bu durumda SQL Server)
32'de swasheck yapın

Özür dileme. :-) Sadece SQL Server'ın Postgres ile doğrudan konuşmasına veya tam tersine ihtiyacınız olmadığını açıklıyordum ..
Aaron Bertrand
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.