postgresでJSONのレコードタイプを定義するにはどうすればよいですか

Byofuel

JSON関数のpostgresドキュメント(https://www.postgresql.org/docs/9.6/static/functions-json.htmlを見ると、JSONオブジェクトを一連の行に展開することについて理解できないセクションがあります。 。

ドキュメントは、この機能のサンプル使用を与える:json_populate_recordset(base anyelement, from_json json)としてselect * from json_populate_recordset(null::myrowtype, '[{"a":1,"b":2},{"a":3,"b":4}]')

しかし、その最初の引数(null::myrowtype)何であるかはわかりません-テーブル定義?

この関数の説明は次のとおりです。from_json内のオブジェクトの最も外側の配列を、baseで定義されたレコードタイプと列が一致する行のセットに展開します(以下の注を参照)。

下部のメモはどれも関連性がないようでした。私はそれをすべて理解するためにサンプルコードでより良い説明を望んでいます。

JGH

2番目の通知は、欠落しているフィールド/値がどのように処理されるかを説明しているためドキュメントで関心のあるものです。

注:json_populate_record、json_populate_recordset、json_to_record、およびjson_to_recordsetでは、JSONからの型強制は「最善の努力」であり、一部の型では目的の値にならない場合があります。JSONキーは、ターゲット行タイプの同一の列名と照合されます。ターゲット行タイプに表示されないJSONフィールドは出力から省略され、どのJSONフィールドにも一致しないターゲット列は単にNULLになります。

json_populate_recordset jsonオブジェクトの名前を、最初の引数として指定されたテーブルの列名にマップします。

create table public.test (a int, b text);

select * from json_populate_recordset(null::public.test, '[{"a":1,"b":"b2"},{"a":3,"b":"b4"}]');


 a | b
---+----
 1 | b2
 3 | b4
(2 rows)

--Wrong column name:
select * from json_populate_recordset(null::public.test, '[{"a":1,"c":"c2"},{"a":3,"c":"c4"}]');
 a | b
---+---
 1 |
 3 |
(2 rows)


--Wrong datatype:
select * from json_populate_recordset(null::public.test, '[{"a":1.1,"b":22},{"a":3.1,"b":44}]');

ERROR:  invalid input syntax for integer: "1.1"

または、既存のテーブルの列名/タイプを使用する代わりに、その場で列を定義できます

select * from json_to_recordset('[{"a":1,"b":"foo"},{"a":"2","c":"bar"}]') as x(a int, b text);
 a |  b
---+-----
 1 | foo
 2 |
(2 rows)

->デフォルトの型キャストが発生し(「2」は2にマップされます)、欠落しているフィールドは無視され(b、2番目のレコード)、フィールドが定義されていないことに注意してください(c)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

このJSONをレコードタイプに解析するにはどうすればよいですか?

分類Dev

プログラムでレコード定義を生成するにはどうすればよいですか?

分類Dev

コードでEntityFrameworkプロバイダーを定義するにはどうすればよいですか?

分類Dev

gradleのビルドタイプ内でネイティブコードのマクロを定義するにはどうすればよいですか?

分類Dev

このタイプのデータをgolangで定義するにはどうすればよいですか?

分類Dev

AWS.CognitoIdentityServiceProviderからタイプ定義をロードするにはどうすればよいですか?

分類Dev

(Py)Spark Structured Streamingを使用して(Kafkaからの)タイムスタンプ付きのJSONレコードのスキーマを定義するにはどうすればよいですか?-null値が表示されます

分類Dev

Gradle:特定のフレーバーのみのビルドタイプを定義するにはどうすればよいですか?

分類Dev

ステートレスReactコンポーネントのTypeScriptタイプ定義を作成するにはどうすればよいですか?

分類Dev

ステートレスReactコンポーネントのTypeScriptタイプ定義を作成するにはどうすればよいですか?

分類Dev

mysql SETタイプのレコードを挿入するにはどうすればよいですか?

分類Dev

1つのエージェントタイプに対して事前定義されたレイアウトパターンの1つを設定するにはどうすればよいですか?(できればコードで)

分類Dev

Dymolaでレコードのカスタムパラメータを定義するにはどうすればよいですか?

分類Dev

コマンドでループを定義するにはどうすればよいですか?

分類Dev

デコレータ関数のタイプ情報が失われないようにデコレータのタイプを定義するにはどうすればよいですか?

分類Dev

コールバックを2つのタイプのいずれかとして定義するにはどうすればよいですか?

分類Dev

Goで独自の型コンバーターを定義するにはどうすればよいですか?

分類Dev

Objective-C / XCodeで、コマンドラインツールプロジェクト内のプロトコルを定義するカスタムCocoaフレームワークを使用するにはどうすればよいですか?

分類Dev

このタイプのHaskellボイラープレートコードを書かないようにするにはどうすればよいですか?

分類Dev

継承できるテンプレート固有のタイプを定義するにはどうすればよいですか?

分類Dev

UWPでコレクションタイプの `DependencyProperty`を定義するにはどうすればよいですか?

分類Dev

plpgsqlでレコードタイプ変数を使用するにはどうすればよいですか?

分類Dev

関連するタイプの特性境界を定義するにはどうすればよいですか?

分類Dev

このコードで自己定義関数を使用するにはどうすればよいですか?

分類Dev

XFCEでプライマリモニターを定義するにはどうすればよいですか?

分類Dev

XFCEでプライマリモニターを定義するにはどうすればよいですか?

分類Dev

Cで定義されたタイプのノードに隣接リストを追加するにはどうすればよいですか?

分類Dev

TypeScriptで動的な `this`値のタイプを定義するにはどうすればよいですか?

分類Dev

リーフレットで複数のカスタムアイコンを定義するにはどうすればよいですか?

Related 関連記事

  1. 1

    このJSONをレコードタイプに解析するにはどうすればよいですか?

  2. 2

    プログラムでレコード定義を生成するにはどうすればよいですか?

  3. 3

    コードでEntityFrameworkプロバイダーを定義するにはどうすればよいですか?

  4. 4

    gradleのビルドタイプ内でネイティブコードのマクロを定義するにはどうすればよいですか?

  5. 5

    このタイプのデータをgolangで定義するにはどうすればよいですか?

  6. 6

    AWS.CognitoIdentityServiceProviderからタイプ定義をロードするにはどうすればよいですか?

  7. 7

    (Py)Spark Structured Streamingを使用して(Kafkaからの)タイムスタンプ付きのJSONレコードのスキーマを定義するにはどうすればよいですか?-null値が表示されます

  8. 8

    Gradle:特定のフレーバーのみのビルドタイプを定義するにはどうすればよいですか?

  9. 9

    ステートレスReactコンポーネントのTypeScriptタイプ定義を作成するにはどうすればよいですか?

  10. 10

    ステートレスReactコンポーネントのTypeScriptタイプ定義を作成するにはどうすればよいですか?

  11. 11

    mysql SETタイプのレコードを挿入するにはどうすればよいですか?

  12. 12

    1つのエージェントタイプに対して事前定義されたレイアウトパターンの1つを設定するにはどうすればよいですか?(できればコードで)

  13. 13

    Dymolaでレコードのカスタムパラメータを定義するにはどうすればよいですか?

  14. 14

    コマンドでループを定義するにはどうすればよいですか?

  15. 15

    デコレータ関数のタイプ情報が失われないようにデコレータのタイプを定義するにはどうすればよいですか?

  16. 16

    コールバックを2つのタイプのいずれかとして定義するにはどうすればよいですか?

  17. 17

    Goで独自の型コンバーターを定義するにはどうすればよいですか?

  18. 18

    Objective-C / XCodeで、コマンドラインツールプロジェクト内のプロトコルを定義するカスタムCocoaフレームワークを使用するにはどうすればよいですか?

  19. 19

    このタイプのHaskellボイラープレートコードを書かないようにするにはどうすればよいですか?

  20. 20

    継承できるテンプレート固有のタイプを定義するにはどうすればよいですか?

  21. 21

    UWPでコレクションタイプの `DependencyProperty`を定義するにはどうすればよいですか?

  22. 22

    plpgsqlでレコードタイプ変数を使用するにはどうすればよいですか?

  23. 23

    関連するタイプの特性境界を定義するにはどうすればよいですか?

  24. 24

    このコードで自己定義関数を使用するにはどうすればよいですか?

  25. 25

    XFCEでプライマリモニターを定義するにはどうすればよいですか?

  26. 26

    XFCEでプライマリモニターを定義するにはどうすればよいですか?

  27. 27

    Cで定義されたタイプのノードに隣接リストを追加するにはどうすればよいですか?

  28. 28

    TypeScriptで動的な `this`値のタイプを定義するにはどうすればよいですか?

  29. 29

    リーフレットで複数のカスタムアイコンを定義するにはどうすればよいですか?

ホットタグ

アーカイブ