Skip to content

Instantly share code, notes, and snippets.

@gorsuch
Created June 6, 2015 15:47

Revisions

  1. gorsuch created this gist Jun 6, 2015.
    63 changes: 63 additions & 0 deletions gistfile1.go
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,63 @@
    package main

    import (
    "encoding/json"
    "log"
    "time"

    "code.google.com/p/goauth2/oauth/jwt"
    bigquery "github.com/google/google-api-go-client/bigquery/v2"
    )

    const (
    App = "XXX"
    Dataset = "XXX"
    Table = "XXX"
    Email = "XXXXXXX@developer.gserviceaccount.com"
    Scope = bigquery.BigqueryScope

    PEM = `
    -----BEGIN RSA PRIVATE KEY-----
    ...
    -----END RSA PRIVATE KEY-----`
    )

    func main() {

    token := jwt.NewToken(Email, Scope, []byte(PEM))
    transport, err := jwt.NewTransport(token)
    if err != nil {
    log.Fatal(err)
    }

    client := transport.Client()
    bq, err := bigquery.New(client)
    if err != nil {
    log.Fatal(err)
    }

    rows := make([]*bigquery.TableDataInsertAllRequestRows, 0)

    row := &bigquery.TableDataInsertAllRequestRows{
    Json: make(map[string]bigquery.JsonValue, 0),
    }
    row.Json["url"] = "https://github.com"
    row.Json["source"] = "example"
    row.Json["t"] = time.Now().Unix()
    row.Json["http_status"] = 200

    rows = append(rows, row)

    req := &bigquery.TableDataInsertAllRequest{
    Rows: rows,
    }

    call := bq.Tabledata.InsertAll(App, Dataset, Table, req)
    resp, err := call.Do()
    if err != nil {
    log.Fatal(err)
    }

    buf, _ := json.Marshal(resp)
    log.Print(string(buf))
    }