Ferramentas para migrar do SQLite para o PostgreSQL

11

Eu preciso migrar continuamente do SQLite para o PostgreSQL. Continuamente, quero dizer que vou reimportar o banco de dados SQLite no PostgreSQL todos os dias. Seria bom se eu pudesse fazer alterações nas tabelas no SQLite como quisesse, sem ter que fazer manualmente nenhuma alteração no banco de dados PostgreSQL. Vou executar a migração do Python, mas pode ser qualquer ferramenta externa que possa ser controlada pela linha de comando. A ferramenta precisa estar disponível para Linux e seria bom se também fosse executada no Windows.

David
fonte
1
Apenas para esclarecer, você precisa migrar dados e esquema?
H0tw1r3
1
Verificado no wiki do PG ?
Denis de Bernardy
Você poderia explicar por que precisa fazer isso? Talvez haja maneiras melhores de abordar o seu problema raiz do que lidar e converter o banco de dados. Por exemplo, o CleanFill sugeriu o desenvolvimento de um ETL.
Nick Chammas
@ Nick Sinto muito, mas é um caso muito especial, o que exigiria muita explicação / discussão para descrever.
David
@ David - Se você quiser mais respostas, pode realmente ajudar a resumir seu caso de uso em outro parágrafo da melhor maneira possível, sem muita explicação / discussão. Tal como está, você está nos pedindo para adivinhar demais. Links para outros sites da SE são sempre úteis se nos ajudarem a entender de onde você é.
Jack diz que tente topanswers.xyz 18/08/11

Respostas:

3

Estou usando o Navicat para migrar entre bancos de dados (principalmente MSSQL / MySQL). Ele roda no Linux e Windows, mas é principalmente uma ferramenta da GUI. Se você criar um perfil, ele poderá ser iniciado na linha de comando. Você pode baixar uma avaliação de 30 dias.

pritaeas
fonte
Obrigado pela dica. Ele pode executar todo o processo de migração usando uma única entrada de linha de comando?
David
1
Sugiro que você faça essa pergunta ao suporte da Navicat. Eles são muito úteis (IMO). De acordo com o site, ele deve funcionar, mas nunca tive a necessidade de testar / usar isso.
Pritaeas 19/08
4

Você já pensou em usar ferramentas ETL? Eles são externos e acredito que o pentaho roda tanto no windows quanto no linux e é gratuito. site de pentaho

CleanFill
fonte
Olá e bem-vindo ao site! Conheço o Pentaho, mas não sabia que poderia resolver isso. Ele pode resolver isso?
David
1
Eu estava pensando em ETL também enquanto lia a pergunta, mas acho que a curva de sobrecarga e aprendizado é bastante alta. Além disso, não acho que será fácil fazer a migração "continuamente".
DrColossos
Obrigado! Pessoalmente, tenho mais experiência com o SSIS, mas isso vem com o SQL Server e você precisa pagar pela licença do SQL. O Pentaho é uma ferramenta ETL e é capaz de migrar dados da origem para o destino. Você precisará dos drivers corretos para se comunicar com a origem / destino. Existe um pouco de uma curva de aprendizado em qualquer uma das ferramentas ETL, mas é outra ferramenta na sua caixa de ferramentas, não é? Haverá várias etapas 1 para migrar dados, outra para migrar alterações DDL. Eu começaria com 1 - apenas mova os dados (etapa mais fácil), depois que você baixar isso, ficará mais confortável para prosseguir.
CleanFill,
Pelo que parece, não tenho certeza de que o uso do Pentaho seja mais rápido do que escrever isso do zero em Java ou Python, dada a curva de aprendizado e a complexidade do uso de uma nova ferramenta ETL.
David
@ David - aprender uma nova ferramenta de ETL é susceptível de ser consideravelmente mais fácil do que re-inventar a roda IMO
Jack diz tentativa topanswers.xyz
2

Eu acho que é possível, mas não acho que muitas pessoas ficariam felizes com isso. No caso geral, o PosgreSQL e o SQLite tratam as definições da tabela de maneira muito diferente.

CREATE TABLE test (trans_date date primary key);

Se eu despejar o conteúdo dessa tabela do SQLite, aqui está o que eu recebo.

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;

Eu acho que todas as colunas teriam que ser VARCHAR () no lado do PostgreSQL. Pode não ser muito difícil escrever um script para alterar todos os tipos de dados SQLite para VARCHAR (). Mas parece muito como chutar baleias mortas na praia.

Mike Sherrill 'Recolha de Gatos'
fonte
Converter todas as colunas em VARCHAR não seria bom o suficiente. Deve haver uma ferramenta para isso ou alguma maneira adequada de fazer isso.
David
Na tabela de exemplo acima, você pode criar uma tabela com uma coluna de data no PostgreSQL, mas não pode importar as duas linhas para ela. Portanto, no caso geral, acho que nada além do VARCHAR (n) poderia funcionar.
Mike Sherrill 'Recall Cat'
Por que você recebe o "Oh, merda". valor do SQLite?
David
2
@ David: Porque o SQLite permite armazenar "Oh, bugger" em uma coluna do tipo "date". O SQLite permite armazenar praticamente qualquer coisa em praticamente qualquer coluna. Esse é um dos principais problemas na migração do SQLite para qualquer dbms que se aproxime dos padrões SQL.
Mike Sherrill 'Cat Recall'
1

Você pode usar

Kit de ferramentas de migração de dados do ESF .

Eu tentei, funciona bem e oferece opções de conversão de vários tipos de bancos de dados para vários tipos de bancos de dados: como sqlite, mysql, mssql, oracle, postgresql e muitos outros!

Você também apenas vê sua versão de avaliação / teste, os resultados são realmente satisfatórios!

linuxeasy
fonte