Saya memiliki beberapa .bak
file besar dari dump SQL Server 2005.
Dapatkah saya mengembalikan ini tanpa menggunakan SQL Server, baik ke PostgreSQL, MySQL, atau untuk flat file teks?
Solusi open source akan sangat berguna.
Saya memiliki beberapa .bak
file besar dari dump SQL Server 2005.
Dapatkah saya mengembalikan ini tanpa menggunakan SQL Server, baik ke PostgreSQL, MySQL, atau untuk flat file teks?
Solusi open source akan sangat berguna.
Jawaban:
Inilah yang saya sarankan:
jika VM memiliki cukup ruang untuk menyimpan cadangan tetapi tidak cukup ruang untuk juga mengembalikannya, Anda dapat melakukan "pemulihan virtual" menggunakan versi percobaan produk dari Red-Gate dengan nama yang sama (yang memungkinkan Anda untuk berinteraksi dengan file cadangan seolah-olah telah dipulihkan). Jika tidak, pulihkan database dengan cara biasa .
Setelah database tersedia (baik melalui pemulihan normal atau pemulihan virtual), Anda dapat membuat skrip untuk skema dan data dengan cara berikut:
Atau Anda dapat mencoba dan bermain dengan utilitas bcp untuk mengekstraksi data ke file CSV atau serupa, tetapi Anda harus melakukan ini tabel-demi-tabel atau menggunakan beberapa skrip cerdas (PowerShell, T-SQL, C # / SMO, dll. ) untuk menghasilkan semua perintah bcp untuk Anda. Setelah berada di file CSV, sepele untuk memuat data ke Postgres secara massal (tetapi Anda masih memiliki beberapa pekerjaan untuk menghasilkan tabel).
Sebagai saran terakhir, jika file .bak tidak ginormous, dan datanya tidak rahasia, saya lebih dari bersedia untuk mencoba dan menghasilkan file untuk Anda dalam format yang Anda butuhkan. Saya memiliki banyak VM Windows dengan ruang, tantangannya adalah mendapatkan file .BAK ke tempat di mana saya dapat mengambilnya - terutama jika lebih besar dari sebagian besar dukungan layanan berbagi file.
sumber
Sayangnya tidak ada cara untuk mendapatkan akses ke konten file .bak tanpa memiliki pengetahuan mendalam tentang internal file itu sendiri. Saya dapat memikirkan satu orang di sini yang mungkin mengetahui informasi ini, tetapi saya tidak dapat berbicara apakah orang tersebut akan memberitahu Anda bagaimana cara melakukannya.
Jadi, Anda harus menginstal contoh SQL Server. Anda juga perlu memastikan bahwa instance ini dapat berbicara dengan server Postgres Anda (bermain-main dengan pg_hba.conf) Setiba di sana, Anda memiliki beberapa jalur yang bagus untuk memigrasi data.
Jalur pertama adalah menginstal driver Postgres Windows ODBC dan mengatur koneksi ke server pg. Kemudian Anda bisa menggunakan SSIS untuk skrip migrasi data. Jika Anda akan pergi dengan rute ini, saya sarankan Anda menginstal SSIS ketika menginstal server database.
Opsi lain juga melibatkan koneksi driver ODBC, tetapi Anda dapat membuat server yang ditautkan di SQL Server dan menjalankan sisipan pada instance pg melalui SQL Server. Saya telah menjawab pertanyaan yang tepat ini di sini sebelumnya sehingga seharusnya tidak sulit ditemukan.
EDIT
Untuk menggabungkan komentar Aaron, setelah Anda menjalankan dan menjalankan SQL Server, Anda juga dapat mengekspor data ke file datar dalam berbagai cara berbeda. Jika Anda memilih jalur ini, beri tahu saya dan saya akan memposting beberapa cara untuk melakukannya
EDIT (2):
Proses server yang ditautkan mungkin bukan pendekatan terbaik kecuali jika Anda ingin membuat struktur sebelumnya. Ini metode pilihan saya, tetapi saya biasanya sudah memiliki struktur di kedua sisi.
Itu membuat jawaban Aaron Bertrand sebagai jawaban terbaik. Harap dicatat bahwa selain tipe data (
IDENTITY
vs.SEQUENCE
, postgres tidak tahu apa-apaNVARCHAR
sejak Anda mengatur encoding pada database itu sendiri). Postgres tidak tahu apa-apa tentangCREATE CLUSTERED INDEX
(CLUSTER
dapat bekerja untuk Anda). Akhirnya, karena saya melihat di komentar bahwa Anda akan menggunakan data spasial, postgresql tidak tahu apa-apa tentangCREATE SPATIAL INDEX
sintaks. Anda harus menginstal postgis dan menggunakanINDEXTYPE
kata kunci untuk membuat indeks spasial. Akhirnya, pastikan Anda menangani skema dengan tepat.Singkat cerita:
sumber