Como inserir uma grande quantidade de dados em um banco de dados ClickHouse?
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
Que tal inserir lote usando cliente http com CSV
- crie o arquivo csv (names.csv) com o conteúdo:
1,Stephana,Bromell
2,Babita,Leroux
3,Pace,Christofides
...
999,Ralph,Jackson
- chame a API HTTP:
curl -i -X POST \
-T "./names.csv" \
'http://localhost:8123/?query=INSERT%20INTO%20names%20FORMAT%20CSV'
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');