1. Go to this page and download the library: Download simpod/clickhouse-client library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
simpod / clickhouse-client example snippets
use Nyholm\Psr7\Factory\Psr17Factory;
use SimPod\ClickHouseClient\Client\PsrClickHouseClient;
use SimPod\ClickHouseClient\Client\Http\RequestFactory;
use SimPod\ClickHouseClient\Param\ParamValueConverterRegistry;
use Symfony\Component\HttpClient\HttpClient;
use Symfony\Component\HttpClient\Psr18Client;
$psr17Factory = new Psr17Factory;
$clickHouseClient = new PsrClickHouseClient(
new Psr18Client(
HttpClient::create([
'base_uri' => 'http://localhost:8123',
'headers' => [
'X-ClickHouse-User' => 'default',
'X-ClickHouse-Key' => '',
],
'query' => ['database' => 'default'],
]),
),
new RequestFactory(
new ParamValueConverterRegistry(),
$psr17Factory,
$psr17Factory,
$psr17Factory
),
);
use Psr\Http\Client\ClientInterface;
use Psr\Log\LoggerInterface;
use SimPod\ClickHouseClient\Client\Http\RequestFactory;
use SimPod\ClickHouseClient\Client\PsrClickHouseClient;
use SimPod\ClickHouseClient\Logger\PsrLogger;
/** @var ClientInterface $psr18Client */
/** @var RequestFactory $requestFactory */
/** @var LoggerInterface $logger */
$clickHouseClient = new PsrClickHouseClient(
$psr18Client,
$requestFactory,
new PsrLogger($logger),
);
use SimPod\ClickHouseClient\Client\ClickHouseClient;
use SimPod\ClickHouseClient\Format\JsonEachRow;
use SimPod\ClickHouseClient\Output;
use SimPod\ClickHouseClient\Settings\ArraySettingsProvider;
/** @var ClickHouseClient $client */
/** @var Output\JsonEachRow $output */
$output = $client->select(
'SELECT * FROM table',
new JsonEachRow(),
new ArraySettingsProvider(['force_primary_key' => 1])
);
use SimPod\ClickHouseClient\Client\ClickHouseClient;
use SimPod\ClickHouseClient\Format\JsonEachRow;
use SimPod\ClickHouseClient\Output;
use SimPod\ClickHouseClient\Settings\ArraySettingsProvider;
/** @var ClickHouseClient $client */
/** @var Output\JsonEachRow $output */
$output = $client->selectWithParams(
'SELECT * FROM table WHERE name = :name',
['name' => 'Alice'],
new JsonEachRow(),
new ArraySettingsProvider(['force_primary_key' => 1])
);
use SimPod\ClickHouseClient\Client\ClickHouseClient;
/** @var ClickHouseClient $client */
$client->insert('table', $data, $columnNames);
use Amp\Http\Client\HttpClientBuilder;
use Amp\Http\Client\Psr7\PsrAdapter;
use Nyholm\Psr7\Factory\Psr17Factory;
use SimPod\ClickHouseClient\Client\Http\RequestFactory;
use SimPod\ClickHouseClient\Client\PsrClickHouseAsyncClient;
use SimPod\ClickHouseClient\Format\JsonEachRow;
use SimPod\ClickHouseClient\Param\ParamValueConverterRegistry;
$psr17Factory = new Psr17Factory();
$client = new PsrClickHouseAsyncClient(
HttpClientBuilder::buildDefault(),
new RequestFactory(
new ParamValueConverterRegistry(),
$psr17Factory,
$psr17Factory,
$psr17Factory,
'http://localhost:8123?database=default',
),
new PsrAdapter($psr17Factory, $psr17Factory),
[
'X-ClickHouse-User' => 'default',
'X-ClickHouse-Key' => '',
],
);
$output = $client->select('SELECT 1 AS data', new JsonEachRow())->await();
use SimPod\ClickHouseClient\Sql\SqlFactory;
use SimPod\ClickHouseClient\Sql\ValueFormatter;
$sqlFactory = new SqlFactory(new ValueFormatter());
$sql = $sqlFactory->createWithParameters(
'SELECT :param',
['param' => 'value']
);
use SimPod\ClickHouseClient\Client\PsrClickHouseClient;
use SimPod\ClickHouseClient\Format\JsonEachRow;
$client = new PsrClickHouseClient(...);
$output = $client->selectWithParams(
'SELECT {p1:String}',
['p1' => 'value'],
new JsonEachRow(),
);
use SimPod\ClickHouseClient\Client\Http\RequestFactory;
use SimPod\ClickHouseClient\Client\PsrClickHouseClient;
use SimPod\ClickHouseClient\Exception\UnsupportedParamValue;
use SimPod\ClickHouseClient\Param\ParamValueConverterRegistry;
use DateTimeInterface;
$paramValueConverterRegistry = new ParamValueConverterRegistry([
'datetime' => static fn (mixed $v, mixed ...$unused) => $v instanceof DateTimeInterface
? $v->format('c')
: throw UnsupportedParamValue::type($v),
]);
$client = new PsrClickHouseClient(..., new RequestFactory($paramValueConverterRegistry, ...));
use SimPod\ClickHouseClient\Sql\Expression;
Expression::new("UUIDStringToNum('6d38d288-5b13-4714-b6e4-faa59ffd49d8')");
use SimPod\ClickHouseClient\Sql\ExpressionFactory;
use SimPod\ClickHouseClient\Sql\ValueFormatter;
$expressionFactory = new ExpressionFactory(new ValueFormatter());
$expression = $expressionFactory->templateAndValues(
'UUIDStringToNum(%s)',
'6d38d288-5b13-4714-b6e4-faa59ffd49d8'
);
use SimPod\ClickHouseClient\Snippet\CurrentDatabase;
$currentDatabaseName = CurrentDatabase::run($client);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.