メインコンテンツまでスキップ
メインコンテンツまでスキップ

URLテーブルエンジン

リモートのHTTP/HTTPSサーバーからデータをクエリします。このエンジンはFileエンジンに似ています。

構文: URL(URL [,Format] [,CompressionMethod])

  • URLパラメータは、Uniform Resource Locatorの構造に従う必要があります。指定されたURLはHTTPまたはHTTPSを使用するサーバーを指す必要があります。サーバーからの応答を得るために追加のヘッダーは必要ありません。

  • FormatはClickHouseがSELECTクエリで使用できる形式でなければならず、必要に応じてINSERTでも使用されます。サポートされている形式の完全なリストについては、Formatsを参照してください。

    この引数が指定されていない場合、ClickHouseはURLパラメータのサフィックスから形式を自動的に検出します。URLパラメータのサフィックスがサポートされている形式のいずれとも一致しない場合、テーブルの作成に失敗します。例えば、エンジン式URL('http://localhost/test.json')の場合、JSON形式が適用されます。

  • CompressionMethodは、HTTPボディを圧縮すべきかどうかを示します。圧縮が有効になっている場合、URLエンジンによって送信されるHTTPパケットには、どの圧縮方法が使用されているかを示すContent-Encodingヘッダーが含まれます。

圧縮を有効にするには、まずURLパラメータで示されたリモートHTTPエンドポイントが対応する圧縮アルゴリズムをサポートしていることを確認してください。

サポートされているCompressionMethodは以下のいずれかである必要があります:

  • gzipまたはgz
  • deflate
  • brotliまたはbr
  • lzmaまたはxz
  • zstdまたはzst
  • lz4
  • bz2
  • snappy
  • none
  • auto

CompressionMethodが指定されていない場合、デフォルトはautoです。これはClickHouseがURLパラメータのサフィックスから圧縮方法を自動的に検出することを意味します。サフィックスが上記の圧縮方法のいずれかに一致する場合、対応する圧縮が適用され、圧縮が有効でない場合もあります。

例えば、エンジン式URL('http://localhost/test.gzip')の場合、gzip圧縮方法が適用されますが、URL('http://localhost/test.fr')の場合は、サフィックスfrが上記の圧縮方法のいずれとも一致しないため、圧縮は有効になりません。

使用方法

INSERTおよびSELECTクエリは、それぞれPOSTおよびGETリクエストに変換されます。POSTリクエストを処理するためには、リモートサーバーがChunked transfer encodingをサポートしている必要があります。

max_http_get_redirects設定を使用して、最大のHTTP GETリダイレクトホップ数を制限できます。

1. サーバー上にurl_engine_tableテーブルを作成します:

2. 標準のPython 3ツールを使用して基本的なHTTPサーバーを作成し、起動します:

3. データをリクエストします:

実装の詳細

  • 読み取りおよび書き込みは並列に可能です。
  • サポートされていないもの:
    • ALTERおよびSELECT...SAMPLE操作。
    • インデックス。
    • レプリケーション。

仮想カラム

  • _pathURLへのパス。タイプ:LowCardinality(String)
  • _fileURLのリソース名。タイプ:LowCardinality(String)
  • _size — リソースのサイズ(バイト単位)。タイプ:Nullable(UInt64)。サイズが不明な場合、値はNULLです。
  • _time — ファイルの最終変更時刻。タイプ:Nullable(DateTime)。時刻が不明な場合、値はNULLです。
  • _headers - HTTP応答ヘッダー。タイプ:Map(LowCardinality(String), LowCardinality(String))

ストレージ設定

  • engine_url_skip_empty_files - 読み取り時に空のファイルをスキップできるようにします。デフォルトでは無効です。
  • enable_url_encoding - URI内のパスのデコード/エンコードを有効/無効にします。デフォルトでは有効です。