เครื่องมือในการโยกย้ายจาก SQLite ไปยัง PostgreSQL


11

ฉันต้องย้ายอย่างต่อเนื่องจาก SQLite ไปยัง PostgreSQL อย่างต่อเนื่องฉันหมายความว่าฉันจะนำเข้าฐานข้อมูล SQLite ไปยัง PostgreSQL ทุกวัน มันจะดีถ้าฉันสามารถเปลี่ยนแปลงตารางใน SQLite ตามที่ฉันต้องการได้โดยไม่ต้องทำการเปลี่ยนแปลงใด ๆ กับฐานข้อมูล PostgreSQL ด้วยตนเอง ฉันจะเรียกใช้การย้ายข้อมูลจาก Python แต่อาจเป็นเครื่องมือภายนอกที่สามารถควบคุมได้จากบรรทัดคำสั่ง เครื่องมือนี้ต้องพร้อมใช้งานสำหรับ Linux และมันก็ดีถ้ามันทำงานบน Windows ด้วย


1
เพื่อชี้แจงคุณต้องการย้ายข้อมูลและสคีมาหรือไม่
h0tw1r3

1
ตรวจสอบในวิกิพีจี PGหรือไม่
เดนิสเดอเบอร์นาดี

คุณสามารถอธิบายรายละเอียดเกี่ยวกับสาเหตุที่ต้องทำเช่นนี้ได้หรือไม่? อาจมีวิธีที่ดีกว่าในการเข้าถึงปัญหารูทของคุณมากกว่าการเผชิญปัญหาและการแปลงฐานข้อมูล ตัวอย่างเช่น CleanFill แนะนำให้พัฒนา ETL
Nick Chammas

@Nick ฉันขอโทษ แต่มันเป็นกรณีพิเศษมากซึ่งจะอธิบาย / อภิปรายมากเกินไป
เดวิด

@David - หากคุณต้องการคำตอบเพิ่มเติมมันอาจช่วยสรุปกรณีการใช้ของคุณในย่อหน้าอื่นได้ดีที่สุดโดยที่คุณไม่สามารถอธิบาย / อภิปรายได้มากเกินไป ตามที่คุณยืนขอให้เราคาดเดามากเกินไป ลิงค์ไปยังไซต์ SE อื่น ๆ นั้นมีประโยชน์เสมอหากพวกเขาช่วยให้เราเข้าใจว่าคุณมาจากไหน
แจ็คบอกว่าลอง topanswers.xyz

คำตอบ:


3

ฉันใช้ Navicat เพื่อโอนย้ายระหว่างฐานข้อมูล (MSSQL / MySQL เป็นหลัก) มันทำงานบน Linux และ Windows แต่ส่วนใหญ่เป็นเครื่องมือ GUI หากคุณสร้างโปรไฟล์ก็สามารถเริ่มต้นได้จากบรรทัดคำสั่ง คุณสามารถดาวน์โหลดรุ่นทดลอง 30 วัน


ขอบคุณสำหรับเคล็ดลับ สามารถรันกระบวนการย้ายข้อมูลทั้งหมดโดยใช้อินพุตบรรทัดคำสั่งเดียวได้หรือไม่
เดวิด

1
ฉันขอแนะนำให้คุณถามคำถามนี้กับฝ่ายสนับสนุน Navicat พวกเขามีประโยชน์มาก (IMO) ตามเว็บไซต์ควรใช้งานได้ แต่ฉันไม่เคยต้องการทดสอบ / ใช้งาน
pritaeas

4

คุณลองใช้เครื่องมือ ETL ดูบ้างไหม? พวกเขาภายนอกและฉันเชื่อว่า pentaho ทำงานบนทั้ง windows และ linux และมันฟรี เว็บไซต์ของ pentaho


สวัสดีและยินดีต้อนรับสู่เว็บไซต์! ฉันรู้เกี่ยวกับ Pentaho แต่ฉันไม่รู้ว่าจะสามารถแก้ปัญหานี้ได้ มันสามารถแก้ปัญหาได้หรือไม่
David

1
ฉันกำลังคิดเกี่ยวกับ ETL ในขณะที่อ่านคำถาม แต่ฉันคิดว่าค่าใช้จ่ายและช่วงการเรียนรู้ค่อนข้างสูง นอกจากนี้ฉันไม่คิดว่าการย้ายถิ่นจะทำได้ง่าย ๆ อย่างต่อเนื่อง
DrColossos

ขอบคุณ! ฉันมีประสบการณ์ส่วนตัวกับ SSIS มากขึ้น แต่นั่นมาพร้อมกับ SQL Server และคุณต้องจ่ายค่าใบอนุญาต SQL Pentaho เป็นเครื่องมือ ETL และสามารถย้ายข้อมูลจากต้นทางไปยังปลายทางได้ คุณจะต้องใช้ไดรเวอร์ที่ถูกต้องในการสื่อสารกับแหล่งที่มา / ปลายทาง มีเส้นโค้งการเรียนรู้เล็กน้อยกับเครื่องมือ ETL ใด ๆ แต่เป็นอีกเครื่องมือหนึ่งในกล่องเครื่องมือของคุณใช่มั้ย จะมีหลายขั้นตอน 1 สำหรับการโอนย้ายข้อมูลและอีกอันสำหรับการโอนย้ายการเปลี่ยนแปลง DDL ฉันจะเริ่มต้นด้วย 1 - เพียงแค่ย้ายข้อมูล (ขั้นตอนง่ายขึ้น) เมื่อคุณได้รับที่ลงคุณจะสะดวกสบายมากขึ้นที่จะดำเนินการต่อไป
CleanFill

จากเสียงนี้ผมไม่แน่ใจว่าการใช้ Pentaho จะเร็วกว่าการเขียนสิ่งนี้ตั้งแต่ต้นใน Java หรือ Python เนื่องจากช่วงการเรียนรู้และความซับซ้อนของการใช้เครื่องมือ ETL ใหม่
David

@David - การเรียนรู้เครื่องมือ ETL ใหม่น่าจะง่ายกว่าการประดิษฐ์ล้อ IMO ใหม่อีกครั้ง
แจ็คบอกว่าลอง topanswers.xyz

2

ฉันคิดว่ามันเป็นไปได้ แต่ฉันไม่คิดว่าหลายคนจะมีความสุขกับมัน ในกรณีทั่วไป PosgreSQL และ SQLite ถือนิยามของตารางที่แตกต่างกันมาก

CREATE TABLE test (trans_date date primary key);

ถ้าฉันทิ้งเนื้อหาของตารางนั้นจาก SQLite นี่คือสิ่งที่ฉันได้รับ

sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE test (trans_date date primary key);
INSERT INTO "test" VALUES('2011-01-01');
INSERT INTO "test" VALUES('Oh, bugger.');
COMMIT;

ฉันคิดว่าทุกคอลัมน์จะต้องเป็น VARCHAR () ทางด้าน PostgreSQL อาจไม่ยากเกินไปที่จะเขียนสคริปต์เพื่อเปลี่ยนชนิดข้อมูล SQLite ทั้งหมดเป็น VARCHAR () แต่มันรู้สึกแย่มาก ๆ เหมือนกับการเตะวาฬตายลงไปที่ชายหาด


การแปลงคอลัมน์ทั้งหมดเป็น VARCHAR จะไม่ดีพอ ควรมีเครื่องมือสำหรับวิธีนี้หรือวิธีที่เหมาะสมที่จะทำ
David

ในตารางตัวอย่างด้านบนคุณสามารถสร้างตารางที่มีคอลัมน์วันที่ใน PostgreSQL แต่คุณไม่สามารถนำเข้าแถวทั้งสองเข้ามาได้ ดังนั้นในกรณีทั่วไปฉันไม่คิดอะไรเลย แต่ VARCHAR (n) อาจทำงานได้
ไมค์ Sherrill 'Cat Recall'

ทำไมคุณถึงได้รับ "โอ้คนเสพเวจมรรค" ค่าจาก SQLite?
David

2
@David: เนื่องจาก SQLite ให้คุณจัดเก็บ "Oh, bugger" ในคอลัมน์ประเภท "date" SQLite ช่วยให้คุณสามารถเก็บทุกอย่างไว้ในคอลัมน์ใดก็ได้ นั่นเป็นหนึ่งในปัญหาหลักในการย้าย SQLite ไปยัง dbms ใด ๆ ที่ใกล้เคียงกับมาตรฐาน SQL
Mike Sherrill 'Cat Recall'

1

คุณสามารถใช้ได้

ESF ย้ายข้อมูล Toolkit

ฉันได้ลองใช้งานได้ดีและให้ตัวเลือกสำหรับการแปลงจากฐานข้อมูลหลายประเภทเป็นฐานข้อมูลหลายประเภทเช่น sqlite, mysql, mssql, oracle, postgresql และอีกมากมาย!

คุณเพียงแค่ดูที่รุ่นทดลอง / ประเมินผลผลลัพธ์เป็นที่น่าพอใจจริงๆ!


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.