by shigemk2

当面は技術的なことしか書かない

MongoDBのJSONデータをsnowflakeに入れる

JSON形式でMongoDBからexportしたデータをsnowflakeのテーブルに追加する。 どうも file_format = (type = json)copy into するためには、1カラム variantでテーブル定義しないといけないみたい。

create or replace table mongo_import(v variant);

copy into mongo_import
from @%mongo_import/tweets.json.gz
file_format = (type = json);

Note that instances of MongoDB Extended JSON are identified by $. These extended keys are valid JSON.

For example: "created_at": {"$date": "2015-06-20T00:33:32.000Z"}, "id": {"$numberLong": "2853454624"},

community.snowflake.com

でももうめんどくさいからステージのFILE FORMATをTYPE = JSONにした上で、parse_jsonでSELECTしたデータをロードしちゃばいいかなって。

create or replace table mongo_import(id Integer, created_at DATETIME);
copy into mongo_import(_id, created_at)
   from (select parse_json($1):_id."$numberLong", parse_json($1):created_at."$date"
        from @%mongo_import/tweets.json.gz)
   on_error = 'skip_file';