# Importador em massa do Vbulletin: valor nulo na coluna "pinned\_globally" da relação "topics" viola restrição de não nulo

**URL:** <https://meta.discourse.org/t/vbulletin-bulk-importer-null-value-in-column-pinned-globally-of-relation-topics-violates-not-null-constraint/366162>\
**Category:** Development\
**Created:** [14 Maio , 2025 20:48 UTC](https://meta.discourse.org/t/vbulletin-bulk-importer-null-value-in-column-pinned-globally-of-relation-topics-violates-not-null-constraint/366162 "2025-05-14T20:48:09Z")\
**Posts on this page:** 1\
**Showing post:** 3

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [14 Maio , 2025 21:51 UTC](https://meta.discourse.org/t/vbulletin-bulk-importer-null-value-in-column-pinned-globally-of-relation-topics-violates-not-null-constraint/366162/3 "2025-05-14T21:51:41Z")

</div>

Aha. Isso explica por que não está no código, eu acho.

Mas isso não resolve o mistério.

```plaintext
pinned_globally | boolean | | not null | false

```

EDIT:  
IA Aleatória diz:

> [@](#):
>
> - **Inserções em Massa ou Ingestão de Dados:** Se você usar ferramentas de inserção em massa ou frameworks que sempre especificam todas as colunas (mesmo com seus valores padrão), o PostgreSQL não usará o padrão da coluna, mas sim o valor fornecido pela ferramenta[7](https://github.com/borisdj/EFCore.BulkExtensions/issues/769)[10](https://stackoverflow.com/questions/48078788/performance-impact-of-default-value-set-on-tables-column-in-postgresql).

Talvez isso seja uma “ferramenta de inserção em massa”?

> [@](#):
>
> Ao usar o comando `COPY` no PostgreSQL, que é com o que `put_copy_data` em Ruby se interliga, o comando não aplica automaticamente valores padrão definidos no esquema da tabela para colunas que não são explicitamente fornecidas nos dados que estão sendo copiados. Isso significa que, se você estiver usando `put_copy_data` para importar dados e não fornecer um valor para uma coluna que tenha um valor padrão, o valor padrão não será aplicado. Em vez disso, a coluna será definida como `NULL`, a menos que você forneça explicitamente um valor para ela nos dados que estão sendo copiados.

Não consigo encontrar uma fonte que diga credivelmente o que a citação acima diz, mas faz sentido, no sentido de que o objetivo é ser rápido, então pular padrões parece algo que faria, e explica o que está acontecendo e, espero, a solução que ainda estou esperando para ver se funcionou.

Aqui está a documentação real! [PostgreSQL: Documentation: 18: COPY](https://www.postgresql.org/docs/current/sql-copy.html)

Se uma lista de colunas for especificada, `COPY TO` copia apenas os dados nas colunas especificadas para o arquivo. Para `COPY FROM`, cada campo no arquivo é inserido, em ordem, na coluna especificada. Colunas da tabela não especificadas na lista de colunas `COPY FROM` receberão seus valores padrão.

Então, se eu estiver lendo isso corretamente, se um campo estiver na lista de campos, o postgres copia cegamente o que você dá a ele, e em branco/nulo é inserido em vez do padrão desejado.

Está ficando cada vez mais lento. Há alguma razão para não usar LIMIT 1000 como o importador regular faz? Parece que talvez 885K tópicos seja muito para morder de uma vez?

---

_[View the full topic](https://meta.discourse.org/t/vbulletin-bulk-importer-null-value-in-column-pinned-globally-of-relation-topics-violates-not-null-constraint/366162)._
