É possível em SQL atingir com elegância o seguinte:
insert into my_table (the_geom) VALUES
geomfromwkb('\x010100000058b4b610a73a27408144b7147f194840',4326)),
geomfromwkb('\x010100000058b4b610a73a27408144b7147f194840',4326)),
.....
que envolve invocar uma função externa geomfromwkb
com dois parâmetros?
Até agora, tenho uma solução nada elegante. A primeira solução é deste tipo:
insert into mytable (the_geom) select
geomfromwkb('\x010100000058b4b610a73a27408144b7147f194840',4326)) union
geomfromwkb('\x010100000058b4b610a73a27408144b7147f194840',4326)) union
.....
O segundo usa a instrução prepare:
PREPARE my_insert AS INSERT INTO geom_example (the_geom)
VALUES (geomfromwkb($1,4326));
EXECUTE my_insert ('\x010100000058b4b610a73a27408144b7147f194840');
EXECUTE my_insert ('\x010100000058b4b610a73a27408144b7147f194840');
statement: DEALLOCATE my_insert;
Pergunta 1: Existe algo mais elegante do que isso?
Questão 2 : O que o banco de dados faz quando vê um monte de sindicatos?
Questão 3 : a preparação realmente acelera as coisas em comparação com uma inserção de gordura?
Questão 4 : a sequência de bytes é do tipo geometria. É possível pular as verificações de consistência (para garantir que esta é realmente a sequência de bytes de geometria) para acelerar as inserções?
Você pode construir uma 'tabela' usando a
VALUES
cláusula e construir a chamada de função sobre ela:Isso é mais fácil de ler, escrever e modificar do que as chamadas de função repetidas. Você pode até alinhar seus dados, o que às vezes facilita a localização de erros.
Uma versão disso pode ser colocar o
VALUES
em uma consulta WITH. Em alguns casos, é melhor colocar (de preferência usando oCOPY
comando) os dados em uma tabela temporária e selecionar a partir daí naINSERT
instrução - isso é útil quando o tamanho da entrada aumenta.Aparentemente, consegui invocar esse comando sem problemas:
o que mostra que uma inserção simples é possível .. Eu me pergunto por que o postgres já se confundiu com muitas vírgulas ..