BigQueryにJSONファイルをローカル環境のコマンドラインからアップロードする
はじめに
BigQueryにデータを送る方法として「実行環境:ローカルファイル」「データ形式:JSON」「実行ツール:コマンドライン」の組み合わせを実施する。
- 送信元のパターン
- ローカルファイル ← コレ
- Cloud Storage
- ストリーミング
- データ形式のパターン
- JSON ← コレ
- CSV
- その他
- 実行ツールのパターン
- コマンドライン ← コレ
- スクリプト
- BigQueryのUI(コンソール画面) ...テーブルの新規作成時のみ可
STEP1: 送信するレコードとそのスキーマのデータをJSONファイルで作成
レコードのJSONの形式は特殊で、「行単位で完結している JSON ファイル[参考記事1]」。
{"sample_column_1":"masato", "sample_column_2":1}
{"sample_column_1":"tarou", "sample_column_2":2}
{"sample_column_1":"marou", "sample_column_2":3}
[
{
"name": "sample_column_1",
"type": "STRING"
},
{
"name": "sample_column_2",
"type": "INTEGER"
}
]
STEP2: SDKインストール
SDKをインストールすることで、指定されたコマンドを入力すれば対応する操作がGoogleクラウド上で可能になる(公式ドキュメント)。
STEP3: BigQueryのデータセットの作成
※コンソール画面のほうが分かりやすいが、コマンドラインを使うなら公式ドキュメントを参照
STEP4: SDKのプロジェクトを指定する
送信したいBigqueryのデータセットがあるプロジェクトが、現在SDKで設定しているプロジェクトと異なる場合、送信先が見つからないためエラーになる。したがって、以下SDKのコマンドで現在のプロジェクトを指定する(公式ドキュメント)
$ gcloud config set project myProject
STEP5: 送信先と送信データを指定してSDKでコマンドを実行する
$ bq load --source_format=NEWLINE_DELIMITED_JSON sample-dataset.sample_table sample-records.json sample-records.json
(公式ドキュメント)
行1~3は新規追加したときのレコードであり、このときテーブルも作成された。同じコマンドを再度実行してテーブルに追加されたレコードが行4~6。つまりテーブルの作成とテーブルへのデータ追加どちらにも対応したコマンドと言える。
※[参考記事1]で紹介されているのを見てload
コマンドをinsert
に変えたところ、こちらでもデータを登録することができた。ただし、相違点を現段階で詳しく調べてはいない。
参考
[1] BigQuery でデータ追加が意外と難しかったのでメモ - @ta_ta_ta_miya
[2] Google BigQuery の JSON投入を軽く試す - isdyy/google-bigquery-json.md
背景
↓をJSONでやってみようかと思って。
暇だからマッチングアプリで自動イイねし続けるプログラムを作ってみた。これだけじゃつまらんけど今後テキストマイニングと画像解析でイイね対象の人の最適化していくのが楽しみ。その前に教師データとして属性・文章・画像URLデータをBigQuery(後でStrageも)に溜めたいところだが費用が気になる... pic.twitter.com/KALuWK4qOG
— なんせすてく (@masatoemata) March 28, 2020
何かあればお手数ですが、本記事か以下アカウントでお知らせください
Author And Source
この問題について(BigQueryにJSONファイルをローカル環境のコマンドラインからアップロードする), 我々は、より多くの情報をここで見つけました https://qiita.com/MasatoEmata/items/c9b568b0803de7a61d6f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .