Como inserir uma grande quantidade de dados em um banco de dados ClickHouse?

Dec 21 2020

Tenho uma instância de um servidor ClickHouse em execução e me conectei a ele com êxito por meio de um cliente. Estou usando Tabix.io para executar minhas consultas. Criei um banco de dados e uma tabela chamada "nomes". Quero inserir muitos nomes gerados aleatoriamente dentro dessa tabela. Eu sei que executar vários comandos como este:

insert into names (id, first_name, last_name) values (1, 'Stephana', 'Bromell');
insert into names (id, first_name, last_name) values (2, 'Babita', 'Leroux');
insert into names (id, first_name, last_name) values (3, 'Pace', 'Christofides');
...
insert into names (id, first_name, last_name) values (999, 'Ralph', 'Jackson');

não é suportado e, portanto, é apenas a primeira consulta que é executada. Em outras palavras, apenas Stephana Bromell aparece na tabela de "nomes".

Qual é a alternativa do ClickHouse para inserir grandes quantidades de dados?

Respostas

5 Yongfeng Dec 23 2020 at 11:12

Que tal inserir lote usando cliente http com CSV

  1. crie o arquivo csv (names.csv) com o conteúdo:
1,Stephana,Bromell
2,Babita,Leroux
3,Pace,Christofides
...
999,Ralph,Jackson
  1. chame a API HTTP:
curl -i -X POST \
   -T "./names.csv" \
 'http://localhost:8123/?query=INSERT%20INTO%20names%20FORMAT%20CSV'
4 DennyCrane Dec 22 2020 at 05:11

vários valores em uma única inserção.

inserir em nomes (id, first_name, last_name) valores (1, 'Stephana', 'Bromell') (2, 'Babita', 'Leroux') (3, 'Ritmo', 'Christofides') (999, 'Ralph' , 'Jackson');