8

埋め込みモードでドリルを使用していますが、クエリの出力をコピーして貼り付ける以外に保存する方法がわかりません。

4

5 に答える 5

3

!record <file_path>すべての出力を特定のファイルに保存 するように指定できます。ドリル ドキュメント

于 2016-03-28T10:46:03.627 に答える
2

SQLLINE を使用している場合は、 !record を使用します。

一連のクエリを使用している場合は、使用する正確なスキーマを指定する必要があります。これは Use schema コマンドを使用して実行できます。残念ながら、ルート スキーマも使用しないでください。ファイル システムに正しいディレクトリを作成し、適切なストレージ構成も使用していることを確認してください。構成例を以下に示します。この後、 Java 経由で SQL ドライバーを使用してcsv を作成するか、Pentaho などのツールで CSV を生成できます。適切に指定すれば、localhost:8047/query でも REST クエリ ツールを使用できます。/out/data/csv で csv を生成するクエリは、構成例の後に下にあります。

ストレージ構成

{
  "type": "file",
  "enabled": true,
  "connection": "file:///",
  "config": null,
  "workspaces": {
    "root": {
      "location": "/out",
      "writable": false,
      "defaultInputFormat": null
    },
    "jsonOut": {
      "location": "/out/data/json",
      "writable": true,
      "defaultInputFormat": "json"
    },
    "csvOut": {
      "location": "/out/data/csv",
      "writable": true,
      "defaultInputFormat": "csv"
    }
  },
  "formats": {
    "json": {
      "type": "json",
      "extensions": [
        "json"
      ]
    },
    "csv": {
      "type": "text",
      "extensions": [
        "csv"
      ],
      "delimiter": ","
    }
  }
}

クエリ

USE fs.csvOut;
ALTER SESSION SET `store.format`='csv';
CREATE TABLE fs.csvOut.mycsv_out
AS SELECT * FROM fs.`my_records_in.json`;

これにより、少なくとも 1 つの CSV が生成され、場合によっては /out/data/csv/mycsv_out に異なるヘッダー仕様を持つ多数の CSV が生成されます。

各ファイルは次の形式に従う必要があります。

\d+_\d+_\d+.csv

注:クエリ結果は 1 つの CSV として読み取ることができますが、ヘッダーの数が異なるため、結果の CSV (複数ある場合) を読み取ることはできません。ファイルを Json ファイルとしてドロップし、コードで読み取るか、後でドリルまたは別のツールを使用して読み取ります。

于 2016-05-26T22:38:02.167 に答える