Usando a seguinte consulta, consigo exportar duas tabelas, selecionando 500 itens aleatoriamente da primeira:
copy (select * from (
select 1 + floor(random() * 1040000)::integer as "documentUUID"
from generate_series(1, 600) g
group by 1) r
join "Document" using ("documentUUID")
inner join "Citation" on ("Document"."citation_id" = "Citation"."citationUUID")
limit 500)
to '/tmp/data.sql';
Desejo importar esses dados para meu banco de dados de teste, mas COPY FROM
não consigo lidar com várias importações de tabelas.
Como posso fazer isso funcionar?
Seu problema é que a saída (estrutura de linha) de sua consulta não corresponde a nenhuma de suas tabelas.
Uma possível solução seria criar uma tabela temporária para colocar seus IDs gerados aleatoriamente e copiar os dados de uma tabela por vez, usando as junções necessárias.
Observe que removi as aspas duplas, pois elas não fazem nenhuma diferença para os nomes de tabela e coluna fornecidos. Também não vejo qual é o mérito de agrupar ao gerar os IDs de documentos aleatórios. Além disso, não vou chamar os IDs
...UUID
porque UUID é um tipo específico usado com muita frequência em aplicações muito diversas.