с ClickHouse?
Необходимо производить INSERT датасета из 10-20тыс записей - за 1 запрос.
Использую асинхронную либу aiochclient.
По оф доке не совсем понятно как передать датасет из НЕСКОЛЬКИХ строк а не 1 за раз (
Пример INSERT-тa, из доки aiochclient:
`await client.execute(
"INSERT INTO t VALUES",
(1, (dt.date(2018, 9, 7), None)),
(2, (dt.date(2018, 9, 8), 3.14)),
)`
Тут то все ясно, но как вставвить строки не руками через запятую как аргументы, а нормально, например просто целым списком?
Если делаю так, например:
`data = ((1, (dt.date(2018, 9, 7), None)), (2, (dt.date(2018, 9, 8), 3.14)))`
`await client.execute(
"INSERT INTO t VALUES",
data,
)`
Получаю:
aiochclient.exceptions.ChClientError: Code: 53. DB::Exception: Type mismatch in IN or VALUES section. Expected: String. Got: Tuple: While executing ValuesBlockInputFormat. (TYPE_MISMATCH) (version 21.10.2.15 (official build))
Спасибо если кто поможет))
Вместо ручками можно звездочку использовать print(*data_list) Как пример. Правда хз что будет если так с 300к строками сделать )
Норм, записало за 0:00:00.894340. Спасибо)
Обсуждают сегодня