Экспорт данных из Clickhouse

Подскажите, пожалуйста, как лучше экспортировать данные из кликхауса с помощью python.

Прямо сейчас я использую этот код, но у меня есть ошибка о том, что имя доступа не может быть достигнуто.

from clickhouse_driver import Client
client=Client(host='http://ipaddress',user='user',password='pass',port=8123)
print(client.execute('select * from table limit 5'))

Есть ли другие способы сделать это?


person Liza Che    schedule 09.11.2018    source источник
comment
Не могли бы вы показать точную ошибку, которую вы получаете?   -  person Ivan Blinkov    schedule 08.12.2018


Ответы (2)


В предоставленном вами примере кода

from clickhouse_driver import Client
client=Client(host='http://ipaddress',user='user',password='pass',port=8123)
print(client.execute('select * from table limit 5'))

вы указываете http://ipaddress, которое не является допустимым именем хоста, если вы измените его на допустимое имя хоста, все должно работать нормально.

person Curlpipe    schedule 09.11.2018
comment
Спасибо, на самом деле я использую действительное имя хоста (просто введите здесь ipaddress в качестве примера) - person Liza Che; 10.11.2018
comment
Вы также поместили http://, потому что я предполагаю, что здесь что-то пойдет не так. - person James Z; 10.11.2018

clickhouse-driver взаимодействует с ClickHouse по собственному протоколу, а не по HTTP, поэтому:

  • host должен содержать имя хоста или IP-адрес (не URL-адрес HTTP).
  • порт должен быть 9000. (или 9440 для безопасного соединения)

Я бы полагался на функцию генератора execute-iter для потоковой передачи данных экспорта:

from clickhouse_driver import Client

client = Client(host='localhost')

data = client.execute_iter('SELECT * FROM numbers(1 * 1000 * 1000)')
row_count = 0

for row in data:
    # do smth per row
    row_count += 1

print(f"Row count is {row_count}.")
# Row count is 1000000.
person vladimir    schedule 19.04.2020