Как импортировать данные csv в таблицу через clickhouse-клиент Docker-контейнера - PullRequest
0 голосов
/ 04 мая 2018

Я использую докер для Windows

- Docker version 18.03.1-ce-win64  
- Docker Engine 18.03.1-ce  
- ClickHouse client version 1.1.54380    
- ClickHouse server version 1.1.54380  

Для экспорта данных из таблицы в формат csv я использую команду: -

  1. Теперь запустите clickhouse-client контейнер для экспорта

$ docker run -it --rm --link clickhouse-server:clickhouse-client yandex/clickhouse-client -m --query="select * from default.table1 FORMAT CSV" > C:/Users/sony/Desktop/table1_data.csv --host clickhouse-server

ПРИМЕЧАНИЕ : вышеуказанная команда работает отлично.

  1. Теперь запустите clickhouse-client контейнер для импорта

$ docker run -it --rm --link clickhouse-server:clickhouse-client yandex/clickhouse-client -m -c "cat C:/Users/sony/Desktop/table1_data.csv | clickhouse-client --host clickhouse-server --query='INSERT INTO default.table1 FORMAT CSV' "

Скажите, пожалуйста, что я делаю неправильно при импорте?

Заранее спасибо

1 Ответ

0 голосов
/ 04 мая 2018

Я думаю, вам следует сначала смонтировать файл csv внутри контейнера. Чтобы смонтировать файл, вы должны добавить опцию -v C:/Users/sony/Desktop/table1_data.csv :~/table1_data.csv в вашей команде docker. Таким образом, ваша команда запуска докера должна быть такой:

$ docker run -it --rm --link clickhouse-server:clickhouse-client yandex/clickhouse-client -m -v C:/Users/sony/Desktop/table1_data.csv:~/table1_data.csv -c "cat ~/table1_data.csv | clickhouse-client --host clickhouse-server --query='INSERT INTO default.table1 FORMAT CSV'"

Редактировать

Мой плохой. Монтирование внутри файла не будет работать. Попробуйте вместо этого:

cat path_to_file/table1_data.csv | docker run -i --rm --link clickhouse-server:clickhouse-client yandex/clickhouse-client -m --host clickhouse-server --query="INSERT INTO default.table1 FORMAT CSV"

Уже попробовал на linux, и все работает. Поскольку cat не работает в Windows, я обнаружил, что type обладает такой же функциональностью, честно говоря, не пробовал:

`type C:/Users/sony/Desktop/table1_data.csv | docker run -i --rm --link clickhouse-server:clickhouse-client yandex/clickhouse-client -m --host clickhouse-server --query="INSERT INTO default.table1 FORMAT CSV"` 

Надеюсь, это сработает.

...