Como tornar os dumps de esquema comparáveis entre o Windows e o Linux

1

Eu tenho dois sistemas em execução, um no Linux e outro no Windows. Da caixa linux, eu corri pg_dump contra ambos os sistemas e joguei o esquema.

Comando

pg_dump:

pg_dump -h HOST -U USER -s -f /tmp/out.sql DB_NAME

Depois de remover todos os comentários "-", eu fiz a diferença entre os arquivos.

Diff snippet de saída, linux comparado ao windows:

-    ADD CONSTRAINT sys_c004775 FOREIGN KEY (ruleid) REFERENCES rule(ruleid);
+    ADD CONSTRAINT sys_c004775 FOREIGN KEY (ruleid) REFERENCES "rule"(ruleid);

O dump de linux não cita nenhuma entidade e o windows faz. Esta é uma função de alguma codificação ou apenas de uma diferença entre o windows e o linux? Existe uma opção no pg_dump para tornar a saída mais consistente?

    
por Jonathan 26.05.2010 / 14:06

1 resposta

1

É bastante estranho, mas ambas as linhas estão corretas e funcionarão em qualquer banco de dados do PostgreSQL em qualquer sistema operacional. "rule" não é uma palavra reservada, mas é um tipo de objeto no PostgreSQL. Essa pode ser a razão pela qual algumas versões do pg_dump tratam esse nome de forma diferente. Se você realmente precisa de nomes sem aspas, apenas use outro nome, um nome sem nenhum tipo de conflito com os tipos de objeto.

    
por 26.05.2010 / 15:15