◾️はじめに
原因はエラー内容ですぐに解決できたが いまいち、納得のいく記述がなかったので 現象自体をメモしておく
【1】トラブル概要
以下のINSERT SELECT 文を実行したところ、 エラー「Expression type does not match column data type」 が表示された
1)エラー発生したSQL
INSERT INTO table_a SELECT * FROM table_b;
定義
-- どちらもVARIANT型 CREATE TABLE table_a ( ... XXXX VARIANT ); CREATE TABLE table_b ( ... XXXX VARIANT );
【2】エラー内容
Expression type does not match column data type, expecting VARIANT but got VARCHAR(16777216) for column XXXX
意訳
式の種類が列のデータ型と一致しません。 列 XXXX に対して VARIANT を期待しましたが、 VARCHAR(16777216) を受け取りました。
【3】原因
* VARIANT型の項目に対して、 VARCHAR型のデータを格納しようとしたため # VARIANT型同士なのに?
【4】解決案
https://docs.snowflake.com/ja/sql-reference/data-types-semistructured#using-variant-values
VARIANT データ型との間で値を変換するには、 CAST 関数、 TO_VARIANT 関数、または :: 演算子(例: expression::VARIANT) を使用して明示的にキャスト
1)例
修正前
INSERT INTO table_a SELECT * FROM table_b;
修正後
-- TO_VARIANTを使って明示的にVARIANT型にキャスト INSERT INTO table_a(..., XXXX) SELECT ..., TO_VARIANT(XXXX) FROM table_b;
関連記事
Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world ~
https://dk521123.hatenablog.com/entry/2021/11/22/212520
エラー「Failed to cast variant value "" to XXX」時の対応
https://dk521123.hatenablog.com/entry/2021/12/17/102659
エラー「Insufficient privileges to operate」時の対応
https://dk521123.hatenablog.com/entry/2022/08/02/090439
エラー「<Object> does not exist or not authorized」時の対応
https://dk521123.hatenablog.com/entry/2022/08/18/120935
エラー「Failure using stage area. ... AccessDenied」時の対応
https://dk521123.hatenablog.com/entry/2022/10/27/195547
エラー「Error assuming AWS_ROLE」時の対応
https://dk521123.hatenablog.com/entry/2022/11/25/175912
所有権変更後にエラー「current role has no privileges on it」
https://dk521123.hatenablog.com/entry/2023/04/14/151140
エラー「Ownership restriction violation」時の対応
https://dk521123.hatenablog.com/entry/2023/07/13/000000
COPY INTO したがデータが格納されていない
https://dk521123.hatenablog.com/entry/2022/12/20/152040
エラー「Transient object cannot be cloned to a permanent object」時の対応
https://dk521123.hatenablog.com/entry/2024/09/13/213300
エラー「String 'XXXXX...' is too long and would be truncated」が発生
https://dk521123.hatenablog.com/entry/2024/10/31/133028