2017-10-02 2 views
0

私はBig QueryでPOCを開始しました。私は、既存のテーブルの列定義/スキーマを更新/変更する方法を知りたいと思います。Bigクエリテーブルのデータ型を更新するには?

BQ MK -t market.custお客様ID:整数、GRP:整数、大館:market.custお客様ID -tストリング BQ更新:文字列、GRP:整数、大館:ストリング

**Error: 
[email protected]:~/data$ bq update -t market.cust custid:string,grp:integer,odate:string 
BigQuery error in update operation: Provided Schema does not match Table arboreal-height-175822:market.cust. Field custid has changed type from INTEGER to STRING** 

表スキーマ:

最終合計バイト数有効期限タイムパーティショニングは、10月夜1時38分29秒


02をラベルスキーマ合計行を修正| - お客様ID:整数0 0 | - GRP:整数 | - 大館:文字列

+0

あなたは低いレートを持っています。あなたは「投票に答える」ことができます。役に立った答えを投票してください。 ...誰かがあなたの質問に答えるときに何をすべきかを調べることができます - http://stackoverflow.com/help/someone-answers。これらの単純なルールに従えば、あなた自身の評判スコアを上げると同時に、私たちはあなたの質問に答えるために動機づけることができます:o)考慮してください! –

答えて

0

は、いくつかの共同の$ tを発生します

  • あなたは
  • 固定型であると、その列を除いて、あなたの元のテーブルと同じスキーマを持つ新しいテーブルにGCSからのロード GCS
  • に$ 0.00

    1. がかかり、超シンプルなアプローチをエクスポート、既存の表OWであります完了しました。 $ 0コスト!

    私はちょうど健全性チェックにこれをしなかったし、それが魅力

    あなたがこのアプローチに慣れるだろうと作品 - あなたも同じテーブルにロードすることができます - WRITE_TRUNCATEでwriteDispositionプロパティの

    +0

    これはこれを行う方法の1つです。https://cloud.google.com/bigquery/docs/tables#append-overwriteによると、bq updateコマンドを発行し、スキーマ定義を提供します: bq update [DATASET]。[TABLE] [TABLE]スキーマ]。私はなぜそれが動作しないのだろうか。 – user3858193

    +0

    新しいフィールドを追加することにより、既存のテーブルのスキーマを更新できます。新しいフィールドはNULLABLEまたはREPEATEDでなければなりません。既存のテーブルスキーマにREQUIREDフィールドを追加することはできません。 - ドキュメントのスキーマの更新については、新しいフィールドの追加のように見えます。 - https://cloud.google.com/bigquery/docs/tables#update-schema –

    +0

    通知。役に立つ答えを投票してください!誰かがあなたの質問に答えたときにどうするかを確認することができます - http://stackoverflow.com/help/someone-answers。これらの単純なルールに従って、あなた自身の評判スコアを上げ、同時にあなたは私たちにあなたの質問に答えるよう動機づけることができます:o) –

    0

    実行あなたが好きなデータをキャストクエリの結果と既存のテーブルを置き換えるクエリ:

    #standardSQL 
    SELECT a, b, c, CAST(d as INT64) AS d 
    FROM `p.t.d` 
    

    更新に基づいて、コメント - 私は整数を文字列に変更する場合:あなたは

    ベル、テーブル全体をスキャンする必要がありますようSELECTを使用して

    #standardSQL 
    SELECT a, b, c, CAST(d as STRING) AS d 
    FROM `p.t.d` 
    
    +0

    私はテーブル構造を更新したいと思います。私の列は整数ですが、文字列に変更したいのですが。通常のsqlではalter tableを書きます。 – user3858193

    +0

    BigQueryで整数を文字列に変更する方法のサンプルを追加しました。テーブルをこのクエリの結果で上書きするだけです。 –

    +0

    market.cust custid:integerを参照してください。私はcust idに文字列値を挿入できません(値はCU101です)。だから私はテーブルの構造を変えなければならない。従来のSQL:ALTER TABLEテーブル名。 ALTER COLUMN column_nameデータ型。 Big Query:bq update -t​​ market.cust custid:文字列、grp:整数、odate:文字列..それはエラー – user3858193

    関連する問題