yandex clickhouseの.NETドライバー。このドライバーは、ネイティブのClickhouseプロトコルを実装し、元のClickhouseソースから恥知らずにリッピングしました。いくつかの点で、それはADO.NETルールに準拠していませんが、これは意図的です。
頂点eです。 ≥。
v.2.0.5:マップ列のサポート(@jorgeparaviciniに感謝)。 JSONコラムの暫定的なサポート。ケース非感受性接続文字列。
v.2.0.4:回復可能なエラー後に使用できなくなる固定接続。
v.2.0.3: INSERT ... SETTINGS setting=value構文。
v.2.0.2.1およびv.2.0.2.2:Net461ターゲットを追加し、K4os.compression.lz4要件を格下げしました。
v.2.0.2:async ioに切り替えて、system.data.common dbproviderfactoryなどを実装しました。 IPv4およびIPv6列のサポートを追加しました。
v.1.5.6-No-polling-on-tls:2.0.3からのバックポート変更。
v.1.5.5-No-Polling-on-TLS:SSL/TLSの保護された接続が適切に動作するのを防ぐバグにパッチを当てました。
v.1.5.5:ブールタイプのサポートを追加しました。
v.1.5.3:空の配列を読むエラーを修正しました。
v.1.5.2:日付32タイプのサポートを追加しました。
v.1.5.1:ClickhouseのTupleタイプを処理する新しい方法を導入しました。これで、値はSystem.Object[]の代わりにSystem.Tuple<>として読み取られます。その変更によりArray(Tuple(...))と入力された値を読み取りました。
v.1.4.0:値が逃げたときにクエリ解析を修正しました。
v.1.3.1:低カードタイプのサポートを追加しました。小数タイプの拡張サポート。
v.1.2.6:タイムゾーンの(非常に限られた)サポートを追加しました。
SSL/TLSトンネルでClickhouse接続をラップするには、最初にサーバー(config.xmlのtcp_port_secure設定)にendに並んで、接続文字列にEncrypt=Trueを追加します(ポート番号を変更することを忘れないでください)。
SSL/TLSは1.5.5より前に正常に機能しておらず、データが到着するのを無限に待つことにつながりました。 1.5.5-5-No-Polling-on-TLSバージョンで「パッチ」され、2.x+で完全に緩和されました。
ドライバーがサーバーに放出したすべてのクエリを表示したい場合はTrace=Trueにtrue = true in connection stringを追加し、 ClickHouse.Adoのカテゴリの.NETトレースリスナーを設定します。
Clickhouse Engineは、 IDbCommand.Execute* roundtripごとに複数のクエリの解析をサポートしていません。クエリを個別に実行されたコマンドに分割してください。
あなたは、完全に間違っている複数のクエリサポートの前述の欠如のために、 NextResult使用されないと思うかもしれませんが! Clickhouseプロトコルとエンジンとして常にNextResult使用する必要があり、クエリごとに複数の結果を返すことができ、結果スキーマが異なる場合があります(クエリが明示的に指定していない場合は、フィールド順序付けに関しては間違いなく)。
Clickhouseのドキュメントを読んだ場合、レコードをBulkに挿入することを強くお勧めします(リクエストごとに1000+)。このドライバーはバルクインサートを実行できます。そのためには、特別な挿入構文を使用する必要があります。
INSERT INTO some_table (col1, col2, col3) VALUES @bulkそしてその後、そのValueキャスト可能にして、それぞれのアイテムの各アイテムがIEnumerable IEnumerableある必要があるため、その値の名前付きbulkを追加する必要があります。空のリストは許可されていません。または、 IBulkInsertEnumerable実装をbulkの値として渡して、処理をスピードアップし、Clickhouseドライバー内でメモリを使用することが少ない場合があります。これは、次の構文で確かに使用できます。
CREATE TABLE test ( date Date , time DateTime, str String, int UInt16) ENGINE = MergeTree( date ,( time ,str, int ), 8192 ) class MyPersistableObject : IEnumerable {
public string MyStringField ;
public DateTime MyDateField ;
public int MyIntField ;
//Count and order of returns must match column order in SQL INSERT
public IEnumerator GetEnumerator ( ) {
yield return MyDateField ;
yield return MyDateField ;
yield return MyStringField ;
yield return ( ushort ) MyIntField ;
}
}
//... somewhere elsewhere ...
var list = new List < MyPersistableObject > ( ) ;
// fill the list to insert
list . Add ( new MyPersistableObject ( ) ) ;
var command = connection . CreateCommand ( ) ;
command . CommandText = "INSERT INTO test (date,time,str,int) VALUES @bulk" ;
command . Parameters . Add ( new ClickHouseParameter {
ParameterName = "bulk" ,
Value = list
} ) ;
command . ExecuteNonQuery ( ) ; いくつかのバグを修正したり、このドライバーに便利な追加を書いた場合は、ここでリクエストをプルしてください。
機能が必要な場合、またはバグが見つかったが、それを実装/修正できない場合は、GitHubでチケットをここに提出してください。
.NETдрайвердяYandex Clickhouse。 Âотличиеотоβцциалジェートно欲しいjdbc протокол(□частие押さえo陶器зацацц愛)напраны遠いクリックハウスのクリックハウスВнекоторыхслたいアネхэ頭µするまみするまでするまみ見つけてくださいClickhouse。
v.2.0.5:подジェートマーマップ賛成ツーゲ(→jorgeparavicini)。 предварительнаяподジェートアッフjson立て。アカデイcomeです。
v.2.0.4:исправленаполомкасоединенияпо富業するまみ
v.2.0.3:добавленаподержкаподなみSETTINGS Вsqlly€ INSERT 。
v.2.0.2.1иv.2.0.2.2:добавленацелジェnet461→購読者
v.2.0.2:переходнаасинхронново胎/≥вод、陶芸system.data.common、流し、В¿¬томーターヴィデルファクトリー。 добавленаподерж偶
v.1.5.6-No-polling-on-tls:該当う限り:該当wully愛:бэ申告
v.1.5.5-no-polling-on-tls: "исправлен"баповисанияминасоединениここでも
v.1.5.5:добавленаподержкатипаブール。
v.1.5.3:исправленаошибкачありがとうございます。
v.1.5.2:добавленаподержкатипа日付32。
v.1.5.1。 □зменён€ччч頭/записиClickhouse” Tuple 。勝するSystem.Tuple<> System.Object[] 。 Array(Tuple(...))
v.1.4.0:□иправленразборзапросоなる見つけ、зλзнач遠アギナーピオンアツアシャート
v.1.3.1:добавленаподержкати最初性。 eque€gushedhecimal。
v.1.2.6:добавленаограниченаяподジェートアープアナー。
ч tcp_port_secure завернотьпротоколикхаосавssl/tls虚な¬неびd、затем、добавитьmentrypt Encrypt=True (”ナーзабы処理負ましい→もっと行き詰まります。
€Версии1.5.5-No-polling-on-tls ssl/Tls 1.5.5-No-no-polling-on-tls
Trace=Trueしかべき勝するρ足例カーデンClickHouse.Ado 。
clickhouseнеあなたのクリックハウスocly±o。ですобрабатыватьнескол講IDbCommand.Execute* 。序a запрос課надоразбиватьнаотдел直接賛美。
≥→〜 NextResult 、≥€€するまするげするげ。引用件名NextResult 、посколькотокоカー率оol o、o、ххэ頭ыэ虚下するげするげするげするげするげéラクチャイシャルアオアツェル島愛のことわざ
≥clickhouse私ohhousehousehouse oly fickhouseするまっています。
INSERT INTO some_table (col1, col2, col3) VALUES @bulk bulk IEnumerable Value IEnumerable 。賛成するまで、¿ччестーターз bulk掛式ччブルクIBulkInsertEnumerable процессоравнотри毎クリックハウス。 э親olaдобно最初
CREATE TABLE test ( date Date , time DateTime, str String, int UInt16) ENGINE = MergeTree( date ,( time ,str, int ), 8192 ) class MyPersistableObject : IEnumerable {
public string MyStringField ;
public DateTime MyDateField ;
public int MyIntField ;
//Количество и порядок return должны соответствовать количеству и порядку полей в SQL INSERT
public IEnumerator GetEnumerator ( ) {
yield return MyDateField ;
yield return MyDateField ;
yield return MyStringField ;
yield return ( ushort ) MyIntField ;
}
}
//... где-то ещё ...
var list = new List < MyPersistableObject > ( ) ;
// заполнение списка вставляемых объектов
list . Add ( new MyPersistableObject ( ) ) ;
var command = connection . CreateCommand ( ) ;
command . CommandText = "INSERT INTO test (date,time,str,int) VALUES @bulk" ;
command . Parameters . Add ( new ClickHouseParameter {
ParameterName = "bulk" ,
Value = list
} ) ;
command . ExecuteNonQuery ( ) ; eсливかり□равилиба欲しい豚a羊a a a a an a aのプル・プル・リクエスト・リ・リクエスト・¿
Öqueedfulestom。