ฉันมี.bak
ไฟล์ขนาดใหญ่จากการถ่ายโอนข้อมูล SQL Server 2005
ฉันสามารถกู้คืนสิ่งเหล่านี้ได้โดยไม่ต้องใช้ SQL Server ไม่ว่าจะเป็น PostgreSQL, MySQL หรือไฟล์แบบข้อความ
โซลูชันโอเพนซอร์สจะมีประโยชน์มากที่สุด
ฉันมี.bak
ไฟล์ขนาดใหญ่จากการถ่ายโอนข้อมูล SQL Server 2005
ฉันสามารถกู้คืนสิ่งเหล่านี้ได้โดยไม่ต้องใช้ SQL Server ไม่ว่าจะเป็น PostgreSQL, MySQL หรือไฟล์แบบข้อความ
โซลูชันโอเพนซอร์สจะมีประโยชน์มากที่สุด
คำตอบ:
นี่คือสิ่งที่ฉันแนะนำ:
หาก VM มีพื้นที่เพียงพอในการสำรองข้อมูล แต่มีเนื้อที่ไม่เพียงพอในการกู้คืนคุณสามารถทำการ "กู้คืนเสมือน" โดยใช้รุ่นทดลองใช้ผลิตภัณฑ์จาก Red-Gate ด้วยชื่อเดียวกัน (ซึ่งช่วยให้คุณสามารถโต้ตอบกับ ไฟล์สำรองข้อมูลราวกับว่ามันถูกกู้คืน) มิฉะนั้นเรียกคืนฐานข้อมูลด้วยวิธีปกติ
เมื่อฐานข้อมูลพร้อมใช้งาน (ไม่ว่าจะเป็นการกู้คืนปกติหรือกู้คืนเสมือน) คุณสามารถสร้างสคริปต์สำหรับสคีมาและข้อมูลด้วยวิธีต่อไปนี้:
หรือคุณสามารถลองเล่นกับยูทิลิตี bcpเพื่อดึงข้อมูลไปยังไฟล์ CSV หรือสิ่งที่คล้ายกัน แต่คุณจะต้องทำแบบนี้ต่อตารางหรือใช้สคริปต์ที่ฉลาด (PowerShell, T-SQL, C # / SMO ฯลฯ ) ) เพื่อสร้างคำสั่ง bcp ทั้งหมดสำหรับคุณ เมื่ออยู่ในไฟล์ CSV แล้วควรจะโหลดข้อมูลลงใน Postgres เป็นจำนวนมาก (แต่คุณจะยังมีงานสร้างตาราง)
ตามคำแนะนำสุดท้ายหากไฟล์. bak ไม่ได้เป็นแบบ ginormous และข้อมูลไม่เป็นความลับฉันยินดีที่จะลองและสร้างไฟล์ให้คุณในรูปแบบที่คุณต้องการ ฉันมี Windows VM มากมายพร้อมพื้นที่ว่างความท้าทายก็คือการนำไฟล์. BAK ไปไว้ในที่ที่ฉันสามารถเรียกใช้ได้โดยเฉพาะอย่างยิ่งถ้ามันใหญ่กว่าบริการสนับสนุนการแชร์ไฟล์ส่วนใหญ่
น่าเสียดายที่ไม่มีวิธีการเข้าถึงเนื้อหาของไฟล์. bak โดยไม่ต้องมีความรู้อย่างลึกซึ้งเกี่ยวกับไฟล์ภายใน ฉันสามารถคิดถึงคนคนหนึ่งที่นี่ซึ่งอาจเป็นความลับกับข้อมูลนี้ แต่ฉันไม่สามารถพูดได้ว่าบุคคลนั้นพูดหรือไม่จะบอกคุณว่าจะทำอย่างไรกับมัน
ดังนั้นคุณจะต้องติดตั้งอินสแตนซ์ SQL Server คุณต้องตรวจสอบให้แน่ใจว่าอินสแตนซ์นี้สามารถพูดคุยกับเซิร์ฟเวอร์ Postgres ของคุณ (frigging กับ pg_hba.conf) เมื่อมีคุณจะมีเส้นทางที่ดีสองทางในการโยกย้ายข้อมูล
เส้นทางแรกคือการติดตั้งไดรเวอร์ Postgres Windows ODBC และตั้งค่าการเชื่อมต่อกับเซิร์ฟเวอร์ pg จากนั้นคุณสามารถใช้ SSIS เพื่อสคริปต์การย้ายข้อมูล หากคุณกำลังจะไปเส้นทางนี้ฉันขอแนะนำให้คุณติดตั้ง SSIS เมื่อติดตั้งเซิร์ฟเวอร์ฐานข้อมูล
ตัวเลือกอื่น ๆ ยังเกี่ยวข้องกับการเชื่อมต่อไดรเวอร์ ODBC แต่คุณสามารถสร้างเซิร์ฟเวอร์ที่เชื่อมโยงใน SQL Server และเรียกใช้การแทรกบนอินสแตนซ์ pg ผ่าน SQL Server ฉันได้ตอบคำถามตรงนี้ก่อนหน้านี้ดังนั้นจึงไม่ยากที่จะหา
แก้ไข
เมื่อต้องการรวมข้อคิดเห็นของ Aaron เมื่อคุณทำให้ SQL Server เริ่มทำงานคุณสามารถส่งออกข้อมูลไปยังไฟล์แบบแฟลตได้หลายวิธี หากคุณเลือกเส้นทางนี้แจ้งให้เราทราบและฉันจะโพสต์สองสามวิธีเพื่อทำเช่นนั้น
แก้ไข (2):
กระบวนการเซิร์ฟเวอร์ที่เชื่อมโยงอาจไม่ใช่วิธีที่ดีที่สุดถ้าคุณไม่ต้องการสร้างโครงสร้างล่วงหน้า เป็นวิธีที่ฉันชอบ แต่โดยปกติฉันจะมีโครงสร้างทั้งสองด้านอยู่แล้ว
นั่นทำให้คำตอบของแอรอนเบอร์ทรานด์เป็นคำตอบที่ดีที่สุด โปรดทราบว่านอกเหนือจากประเภทข้อมูล ( IDENTITY
เทียบกับSEQUENCE
postgres ไม่รู้อะไรเลยNVARCHAR
ตั้งแต่คุณตั้งค่าการเข้ารหัสในฐานข้อมูลเอง) Postgres ไม่รู้อะไรเลยCREATE CLUSTERED INDEX
( CLUSTER
อาจใช้ได้กับคุณ) ในที่สุดเนื่องจากฉันเห็นในความคิดเห็นที่คุณจะใช้ข้อมูลเชิงพื้นที่ postgresql รู้CREATE SPATIAL INDEX
ไวยากรณ์ไม่ คุณจะต้องติดตั้ง postgis และใช้INDEXTYPE
คำหลักเพื่อสร้างดัชนีเชิงพื้นที่ สุดท้ายตรวจสอบให้แน่ใจว่าคุณจัดการสกีมาอย่างเหมาะสม
เรื่องสั้นสั้น: