clickhouse php,关于php:写了一个-clickhouse-php-tcp客户端

最近在one框架 减少对 clickhouse 数据库的反对,没有找到一个称心的客户端。去clickhouse 官网看了竟然没有客户端的协定文档,然而还是挡不住我造轮子激情,依据官网c++的代码连蒙带猜,写进去了。目前还有局部类型不反对,后续欠缺……

仓库地址

https://github.com/lizhichao/…

装置

composer require lizhichao/one-ck

【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年99元

反对类型

[x] UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64

[x] Float32, Float64

[x] Decimal(P, S), Decimal32(S), Decimal64(S), Decimal128(S)

[x] String

[x] FixedString(N)

[x] UUID

[x] Date

[x] Datetime

[x] Datetime64

[x] Nullable(T)

[x] IPv4

[x] IPv6

[x] Array(T)

[ ] Tuple(T)

[ ] Enum (can use LowCardinality instead)

Demo

use OneCk\Client;

use OneCk\Types;

//default

//$ck = new Client('tcp://127.0.0.1:9000', 'default', '', 'default');

$t1 = microtime(true);

$ck = new Client('tcp://192.168.31.216:9091', 'default', '123456', 'test1');

$data['server info'] = $ck->getServerInfo();

$data['drop table'] = $ck->query('DROP TABLE IF EXISTS t6');

$table = [

'CREATE TABLE t6 (',

'`id` UInt32,',

'`f1` Int32,',

'`f2` Nullable(Int32),',

'`f3` UInt8,',

'`f4` Nullable(UInt8),',

'`f5` UInt16,',

'`f6` UInt64,',

'`f7` Int64,',

'`f8` Float32,',

'`f9` Float64,',

'`f10` Nullable(Float64),',

'`f11` Decimal32(3),',

'`f12` Decimal64(5),',

'`f13` Decimal128(7),',

'`f14` Nullable(Decimal128(7)),',

'`f15` String,',

'`f16` Nullable(String),',

'`f17` FixedString(32),',

'`f18` UUID,',

'`f19` Date,',

'`f20` Nullable(Date),',

'`f21` Datetime,',

'`f22` Datetime64(3),',

'`f23` IPv4,',

'`f24` Nullable(IPv4),',

'`f25` IPv6,',

'`f26` LowCardinality(String)',

') ENGINE = MergeTree() ORDER BY id SETTINGS index_granularity = 8192'

];

$data['create table'] = $ck->query(implode("\n", $table));

$data['insert data'] = $ck->insert('t6', [

[

'id' => 1,

'f1' => -3,

'f2' => null,

'f3' => 127,

'f4' => null,

'f5' => 3322,

'f6' => 1844674407370955161,

'f7' => 9223372036854775807,

'f8' => -2132121.5,

'f9' => 6546546544665.66658,

'f10' => null,

'f11' => 552.339,

'f12' => 3658.6954,

'f13' => '170141183460469231168730371588.4105721',

'f14' => null,

'f15' => 'emoji😀😁😂😃😄',

'f16' => null,

'f17' => md5('a'),

'f18' => '016e64be-605f-4108-8a67-495d74d7ef3c',

'f19' => '2020-09-05',

'f20' => null,

'f21' => '2020-09-05 14:25:12',

'f22' => '2020-09-05 14:25:12.258',

'f23' => '192.168.1.1',

'f24' => null,

'f25' => 'CDCD:910A:2222:5498:8475:1111:3900:2020',

'f26' => 'eee'

],

[

'id' => 2,

'f1' => 3,

'f2' => 3,

'f3' => 3,

'f4' => 3,

'f5' => 3,

'f6' => 3,

'f7' => 3,

'f8' => 3,

'f9' => 3,

'f10' => 3,

'f11' => -552.339,

'f12' => -3658.6954,

'f13' => '-170141183460469231168730371588.4105721',

'f14' => 3,

'f15' => 'aaa',

'f16' => 'aaa',

'f17' => md5('55'),

'f18' => md5('55'),

'f19' => '2020-09-06',

'f20' => '2020-09-06',

'f21' => '2020-09-06 14:25:12',

'f22' => '2020-09-06 14:25:12.258',

'f23' => '251.222.221.231',

'f24' => '192.168.1.2',

'f25' => '1030::C9B4:FF12:48AA:1A2B',

'f26' => 'eee22'

],

[

'id' => 3,

'f1' => -1,

'f2' => 3,

'f3' => 3,

'f4' => 3,

'f5' => 3,

'f6' => 3,

'f7' => 3,

'f8' => 3,

'f9' => 3,

'f10' => 3,

'f11' => 3,

'f12' => 3,

'f13' => 3,

'f14' => 3,

'f15' => 'aaa',

'f16' => 'aaa',

'f17' => md5('a'),

'f18' => '3026ee79-ac2a-46d2-882d-959a55d71025',

'f19' => '2020-09-07',

'f20' => '2020-09-07',

'f21' => '2020-09-07 14:25:12',

'f22' => '2020-09-07 14:25:12.258',

'f23' => '192.168.1.1',

'f24' => null,

'f25' => '2001:DB8:2de::e13',

'f26' => 'eee22'

]

]);

//$data['struct'] = $ck->query('desc t6');

$data['select t6'] = $ck->query('select * from t6');

$data['select t6 int64'] = $ck->query("select id,f6 from t6 where f6=1844674407370955161");

$data['select t6 Decimal32'] = $ck->query("select id,f11 from t6 where f11='552.339'");

$data['select t6 Decimal64'] = $ck->query("select id,f12 from t6 where f12='-3658.69540'");

$data['select t6 Decimal128'] = $ck->query("select id,f13 from t6 where f13='170141183460469231168730371588.4105721'");

$data['select t6 uuid'] = $ck->query("select id,f18 from t6 where f18='3026ee79-ac2a-46d2-882d-959a55d71025'");

$data['select t6 date'] = $ck->query("select id,f19 from t6 where f19='2020-09-05'");

$data['select t6 datetime'] = $ck->query("select id,f21 from t6 where f21='2020-09-07 20:25:12'");

$data['select t6 datetime64'] = $ck->query("select id,f22 from t6 where f22='2020-09-06 20:25:12.258'");

$data['select t6 ip'] = $ck->query("select id,f23,f25 from t6 where f23=" . Types::encodeIpv4('192.168.1.1'));

$data['select t6 ip64'] = $ck->query("select id,f23,f25 from t6 where f25='" . Types::encodeIpv6('1030::c9b4:ff12:48aa:1a2b') . "'");

echo json_encode($data);

// Batch write

//$data['drop table'] = $ck->query('DROP TABLE IF EXISTS t7');

//$table = [

// 'CREATE TABLE t7 (',

// '`id` UInt32,',

// '`f2` Nullable(Int32),',

// '`f5` UInt16,',

// '`f15` String',

// ') ENGINE = MergeTree() ORDER BY id SETTINGS index_granularity = 8192'

//];

//$data['create table'] = $ck->query(implode("\n", $table));

//$ck->writeStart('t7',['id','f2','f5','f15']);

//for ($i = 0; $i < 100; $i++) {

// $da = [];

// for ($j = 0; $j < 1000; $j++) {

// $da[] = [

// 'id' => mt_rand(1,1000000),

// 'f2' => mt_rand(-1000000,1000000),

// 'f5' => mt_rand(1,10000),

// 'f15' => md5(mt_rand(1,10000))

// ];

// }

// $ck->writeBlock($da);

//}

//

//$ck->writeEnd();

//

//echo microtime(true) - $t1;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值