Eu tenho acesso somente leitura a um banco de dados em um servidor remoto. Então, eu posso executar:
COPY products TO '/tmp/products.csv' DELIMITER ',';
Mas nesse servidor não tenho permissões para criar / salvar um arquivo, por isso preciso fazer isso na minha máquina local.
Quando me conecto ao banco de dados remoto, como posso executar um comando para salvar o arquivo na minha máquina local em vez do servidor remoto?
Ou, como posso executar um comando do Linux para conectar-se ao banco de dados remoto, executar uma consulta e salvar a saída como um arquivo na minha máquina local?
fonte
psql
um script, começando comBEGIN
, executando seus\copy
comandos e, em seguida, aCOMMIT
. Ou usepsql -f
para executar um script em vez de usar um documento aqui.-A
em vez de-P format=unaligned
e também eu acho que você precisa de um-P fieldsep=,
O comando Linux é:
fonte
-t -P format=unaligned
a esse comando, obteria algo um pouco mais próximo, como CSV delimitado por buggy, mas os pipes no texto não seriam escapados, por isso seria inválido.-P fieldsep=','
exceto que isso seria ainda mais provável de causar erros devido à falta de escape.-P fieldsep_zero=on
seria bom se você não se importasse em analisar texto delimitado por bytes nulos, pois bytes nulos não podem ocorrerpsql
naturalmente na saída.