Strumenti per migrare da SQLite a PostgreSQL


11

Devo migrare continuamente da SQLite a PostgreSQL. Intendo continuamente, intendo reimportare il database SQLite in PostgreSQL ogni giorno. Sarebbe bello se potessi apportare modifiche alle tabelle in SQLite a mio piacimento senza dover apportare manualmente modifiche al database PostgreSQL. Eseguirò la migrazione da Python, ma potrebbe essere qualsiasi strumento esterno, che può essere controllato dalla riga di comando. Lo strumento deve essere disponibile per Linux e sarebbe bello se funzionasse anche su Windows.


1
Solo per chiarire, hai bisogno di migrare sia i dati che lo schema?
h0tw1r3,

1
Controllato nel wiki PG ?
Denis de Bernardy,

Potresti approfondire il motivo per cui devi farlo? Forse ci sono modi migliori per affrontare il tuo problema di root che far fronte e convertire il database. Ad esempio, CleanFill ha suggerito di sviluppare un ETL.
Nick Chammas,

@Nick Mi dispiace, ma è un caso molto speciale, che richiederebbe troppe spiegazioni / discussioni per descrivere.
David,

@ David - Se vuoi più risposte, può davvero aiutare a riassumere il tuo caso d'uso in un altro paragrafo nel miglior modo possibile senza troppe spiegazioni / discussioni. Allo stato attuale ci stai chiedendo di fare troppe congetture. I collegamenti ad altri siti SE sono sempre utili se ci aiutano a capire da dove vieni.
Jack dice di provare topanswers.xyz il

Risposte:


3

Sto usando Navicat per migrare tra i database (MSSQL / MySQL principalmente). Funziona su Linux e Windows, ma è principalmente uno strumento GUI. Se si crea un profilo, può essere avviato dalla riga di comando. Puoi scaricare una versione di prova di 30 giorni.


Grazie per il suggerimento. Può eseguire l'intero processo di migrazione utilizzando un singolo input della riga di comando?
David,

1
Ti suggerisco di porre questa domanda al supporto Navicat. Sono molto utili (IMO). Secondo il sito web dovrebbe funzionare, ma non ho mai avuto bisogno di testarlo / usarlo.
pritaeas,

4

Hai esaminato l'utilizzo degli strumenti ETL? Sono esterni e credo che pentaho funzioni sia su Windows sia su Linux ed è gratuito. il sito di pentaho


Ciao e benvenuto nel sito! Conosco Pentaho, ma non sapevo che potesse risolverlo. Può risolverlo, pensa?
David,

1
Stavo pensando anche all'ETL mentre leggevo la domanda, ma penso che la curva generale e la curva di apprendimento siano piuttosto alte. Inoltre, non penso che sarà facile eseguire la migrazione "in modo continuo".
DrColossos,

Grazie! Personalmente ho più esperienza con SSIS, ma questo viene fornito con SQL Server e devi pagare per la licenza SQL. Pentaho è uno strumento ETL ed è in grado di migrare i dati dall'origine alla destinazione. Avrai bisogno dei driver corretti per comunicare con l'origine / destinazione. C'è un po 'di una curva di apprendimento con uno qualsiasi degli strumenti ETL, ma è un altro strumento nella tua cassetta degli attrezzi, eh? Ci saranno diversi passaggi 1 per la migrazione dei dati, un altro per la migrazione delle modifiche DDL. Vorrei iniziare con 1: basta spostare i dati (passaggio più semplice), una volta che lo si scende, sarà più comodo procedere.
CleanFill

Dal suono di questo, non sono sicuro che usare Pentaho sarebbe più veloce che scriverlo da zero in Java o Python, data la curva di apprendimento e la complessità dell'uso di un nuovo strumento ETL.
David,

@David - apprendere un nuovo strumento ETL è probabilmente molto più semplice che reinventare la ruota IMO
Jack dice che prova topanswers.xyz il

2

Penso che sia possibile, ma non credo che molte persone ne sarebbero contente. Nel caso generale, PosgreSQL e SQLite trattano le definizioni delle tabelle in modo molto diverso.

CREATE TABLE test (trans_date date primary key);

Se scarico il contenuto di quella tabella da SQLite, ecco cosa ottengo.

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;

Penso che ogni colonna dovrebbe essere VARCHAR () sul lato PostgreSQL. Potrebbe non essere troppo difficile scrivere uno script per modificare tutti i tipi di dati SQLite in VARCHAR (). Ma è terribile come calciare balene morte lungo la spiaggia.


Convertire tutte le colonne in VARCHAR non sarebbe abbastanza buono. Dovrebbe esserci uno strumento per questo o un modo adeguato per farlo.
David,

Nella tabella di esempio sopra, potresti creare una tabella con una colonna della data in PostgreSQL, ma non puoi importare entrambe le righe in essa. Quindi, nel caso generale, non credo che VARCHAR (n) possa funzionare.
Mike Sherrill "Cat Recall",

Perché ottieni "Oh, bugger". valore da SQLite?
David,

2
@David: poiché SQLite ti consente di memorizzare "Oh, bugger" in una colonna di tipo "data". SQLite ti consente di archiviare qualsiasi cosa in qualsiasi colonna. Questo è uno dei problemi principali nella migrazione di SQLite a qualsiasi dbms che si avvicina agli standard SQL.
Mike Sherrill "Cat Recall",

1

Puoi usare

Toolkit di migrazione dei dati dell'FSE .

L'ho provato, funziona bene e offre opzioni per la conversione da più tipi di database a più tipi di database: come sqlite, mysql, mssql, oracle, postgresql e molti altri!

Basta dare un'occhiata alla sua versione di prova / valutazione, i risultati sono davvero soddisfacenti!


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.