[解決済み] Postgresで、レコードにjsonや文字列が混在している場合に、'invalid input syntax for type json'を防ぐにはどうしたらよいでしょうか。
2022-02-17 12:16:48
質問
JSONとプランテキストを含むテキストカラムを持っています。 それをJSONに変換し、特定のプロパティを選択したいと思います。 例えば
user_data
_________
{"user": {"name": "jim"}}
{"user": {"name": "sally"}}
some random data string
試してみました。
select user_data::json#>'{user,name}' from users
得ることができる。
ERROR: invalid input syntax for type json
DETAIL: Token "some" is invalid.
CONTEXT: JSON user_data, line 1: some...
これを防ぐことは可能なのでしょうか?
解決方法は?
無効なJSONを含む行をスキップしたい場合は、まず テスト が有効なJSONであるかどうかを確認します。これを行うには、値のパースを試み、無効な JSON 値の例外をキャッチする関数を作成します。
CREATE OR REPLACE FUNCTION is_json(input_text varchar) RETURNS boolean AS $$
DECLARE
maybe_json json;
BEGIN
BEGIN
maybe_json := input_text;
EXCEPTION WHEN others THEN
RETURN FALSE;
END;
RETURN TRUE;
END;
$$ LANGUAGE plpgsql IMMUTABLE;
それができたら
is_json
関数の中で
CASE
または
WHERE
節を使用して、有効な値を絞り込むことができます。
-- this can eliminate invalid values
SELECT user_data::json #> '{user,name}'
FROM users WHERE is_json(user_data);
-- or this if you want to fill will NULLs
SELECT
CASE
WHEN is_json(user_data)
THEN user_data::json #> '{user,name}'
ELSE
NULL
END
FROM users;
関連
-
[解決済み] SQLAlchemy (psycopg2.ProgrammingError) can't adapt type 'dict'.
-
[解決済み] JSONDecodeError: 期待される値:行1列1
-
ajax return json format Report 500 Internal Server Error
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] JSONでnullを表現する
-
[解決済み] node.jsでJSONをpretty-printするにはどうしたらいいですか?
-
[解決済み] JSONオブジェクトに末尾のカンマを使用することは可能ですか?
-
jsonファイルのインポートエラー、TypeError expected string or buffer
-
json.loadsがエラーを報告します。二重引用符で囲まれたプロパティ名を期待:行1列2(char 1)
-
[解決済み] PostgresでJSONフィールドにインデックスを作成するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】tsconfig.json: Build:No inputs were found in config file.
-
[解決済み] Kubernetes / kubectl - 「コンテナ名を指定する必要があります」とありますが、そのような感じですか?
-
[解決済み] json gem のインストール中にエラー 'mkmf.rb can't find header files for ruby' が発生する。
-
[解決済み] マニフェスト 行: 1, 列: 1, 構文エラー
-
[解決済み] Azure VMのエラーです。"あなたのアカウントは、このデバイスを使用できないように設定されています。詳細については、システム管理者にお問い合わせください" [終了しました]。
-
[解決済み] JSON APIのレスポンス形式には規格がありますか?
-
[解決済み] PostgreSQLで一重引用符で囲まれたテキストを挿入する
-
json.loadsがエラーを報告します。二重引用符で囲まれたプロパティ名を期待:行1列2(char 1)
-
[解決済み] SwiftでJSON辞書の型を持つプロパティをデコードする方法 [45] デコード可能なプロトコル
-
[解決済み] ASP.NETでWebAPIやMVCを使ってJSONを返す。