bashkarev / clickhouse
Driver yii2 for column-oriented database ClickHouse.
Installs: 106 474
Dependents: 0
Suggesters: 0
Security: 0
Stars: 22
Watchers: 3
Forks: 15
Open Issues: 4
Type:yii2-extension
Requires
- php: >=7.1
- smi2/phpclickhouse: ^1.3.3
- yiisoft/yii2: ~2.0.13
Requires (Dev)
- phpunit/phpunit: ~5.7
README
This extension provides the ClickHouse integration for the Yii framework 2.0. Main features:
- SQL commands
- Query builder
- Schema builder
- Migrations
- Batch Insert
- Parallel insert from large CSV files
- Valid handling of UInt64 type in PHP
- Supports Decimals and Nullable fields
Installation
The preferred way to install this extension is through composer.
Either run
composer require bashkarev/clickhouse
Configuration
To use this extension, simply add the following code in your application configuration:
return [ //.... 'clickhouse' => [ 'class' => 'bashkarev\clickhouse\Connection', 'dsn' => 'host=localhost;port=8123;database=default;connect_timeout_with_failover_ms=10', 'username' => 'default', 'password' => '', ], ];
Using DebugPanel
Add the following to you application config to enable it (if you already have the debug module enabled, it is sufficient to just add the panels configuration):
// ... 'bootstrap' => ['debug'], 'modules' => [ 'debug' => [ 'class' => 'yii\\debug\\Module', 'panels' => [ 'clickhouse' => [ 'class' => 'bashkarev\clickhouse\debug\Panel', // 'db' => 'clickhouse', // ClickHouse component ID, defaults to `db`. Uncomment and change this line, if you registered component with a different ID. ], ], ], ], // ...
Using Migrations
In order to enable this command you should adjust the configuration of your console application:
return [ // ... 'controllerMap' => [ 'clickhouse-migrate' => 'bashkarev\clickhouse\console\controllers\MigrateController' ], ];
# creates a new migration named 'create_target' yii clickhouse-migrate/create create_target # applies ALL new migrations yii clickhouse-migrate # reverts the last applied migration yii clickhouse-migrate/down
Access to native SMI2 ClickHouse client
$client = \Yii::$app->clickhouse->getClient();
Insert csv files
Files are uploaded in parallel.
$db = \Yii::$app->clickhouse; $client = $db->getClient(); $results = $client->insertBatchFiles('table_name', ['file_with_data.csv']); $state = $results['file_with_data.csv']; $isSuccess = !$state->isError(); $uploadInfo = $state->responseInfo(); print_r($uploadInfo);