PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como importar um CSV para o postgresql que já possui ID's atribuídos?


Um serial a coluna só desenha o próximo número de uma sequência por padrão . Se você escrever um valor nele, o padrão não será ativado. Você pode apenas COPY para a mesa (veja a resposta do @Saravanan ) e, em seguida, atualize a sequência de acordo. Um maneira de fazer isso:
SELECT setval('tbl_tbl_id_seq', max(tbl_id)) FROM tbl;

tbl_id sendo a coluna serial da tabela tbl , tirando da sequência tbl_tbl_id_seq (nome padrão).

Melhor em uma transação única em caso de carga concorrente.

Observe que não há erro off-by-1 aqui. Por documentação:

Minha ênfase em negrito.