Powershell 和 ClickHouse

Powershell and ClickHouse

我正在尝试将 Powershell 配置为 ETL 并想从 ClickHouse 获取数据,任何人都可以建议一个连接到 Powershell 数据库的示例吗?或者没有办法做到这一点?通过 ODBC,请求挂起,甚至 Select 1.

$Cnn = new-object System.Data.Odbc.OdbcConnection("DSN=test"); 
$Cnn.Open() 
$CmdCreate = $Cnn.CreateCommand() 
$CmdCreate.CommandText = " select 1" 
$CmdCreate.ExecuteNonQuery() # | Out-Null $Cnn.Close()

作为备用 ODBC 可以使用 ClickHouse HTTP interface:

$Env:clickhouse_server = '1.1.1.1'
$Env:user = 'user'
$Env:password = 'passw'

# pass credentials in URL
('SELECT version()' `
  | Invoke-WebRequest "http://${Env:clickhouse_server}:8123?user=${Env:user}&password=${Env:password}" `
  -Method 'POST' -UseBasicParsing).Content

# pass credentials in Headers
('SELECT version()' `
  | Invoke-WebRequest "http://${Env:clickhouse_server}:8123" `
  -Headers @{'X-ClickHouse-User'="${Env:user}"; 'X-ClickHouse-Key'="${Env:password}"} `
  -Method 'POST' -UseBasicParsing).Content

考虑使用 python 访问 CH(参见 clickhouse_driver):

pip install clickhouse-driver

python
>>> from clickhouse_driver import Client
>>> import os
>>> client = Client(host=os.getenv('clickhouse_server'), user=os.getenv('user'), password=os.getenv('password'))
>>> client.execute('SELECT version()')
[('20.3.12.112',)]
>>>