如何在Google BigQuery

时间:2018-03-06 10:58:52

标签: google-cloud-platform google-bigquery database-migration liquibase flyway

如何管理Google BigQuery的架构迁移,我们过去曾使用过Liquibase和Flyway。我们可以使用哪种工具来管理架构修改等(例如,在dev / staging环境中添加新列)。

3 个答案:

答案 0 :(得分:1)

找到了用于BigQuery模式迁移的开源框架

https://github.com/medjed/bigquery_migration

另一个解决方案

https://robertsahlin.com/automatic-builds-and-version-control-of-your-bigquery-views/

PS

有人在飞行中打开了ticket以支持BigQuery。

答案 1 :(得分:1)

Flyway 是一种非常流行的数据库迁移工具,现在提供对 BigQuery 的测试版支持,但正在等待认证。

您可以在此处访问测试版:https://flywaydb.org/documentation/database/big-query 回答简短调查后。

我已经从命令行对其进行了测试,效果很好!我花了大约一个小时来熟悉 Flyway 的配置,现在使用 from:email 命令调用它。

这是一个具有以下文件结构的 NodeJS 项目示例:

yarn

package.json

package.json
fireway/
    <SERVICE_ACCOUNT_JSON_FILE>
    flyway.conf
    migrations/
        V1_<YOUR_MIGRATION>.sql

flyway.conf

{
  ...
  "scripts": {
    ...
    "migrate": "flyway -configFiles=flyway/flyway.conf migrate"
  },
  ...
}

然后,只要您有新的迁移要申请,就可以随时调用 flyway.url=jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;ProjectId=<YOUR_PROJECT_ID>;OAuthType=0;OAuthServiceAcctEmail=<SERVICE_ACCOUNT_NAME>;OAuthPvtKeyPath=flyway/<SERVICE_ACCOUNT_JSON_FILE>; flyway.schemas=<YOUR_DATASET_NAME> flyway.user= flyway.password= flyway.locations=filesystem:./flyway/migrations flyway.baselineOnMigrate=true

答案 2 :(得分:0)

根据BQ docs,您可以在架构中添加一行而无需任何其他过程。

对于更复杂的转换,如果可以在SQL查询中解析,则可以运行该查询setting the destination table as the source table(尽管如果出现问题我会建议creating a backup of the table。)

示例

假设我有一个表是一个整数(d列),但在插入时它被写成一个字符串。我可以通过将自己设置为目标表并运行如下查询来修改表:

SELECT
  a,
  b,
  c,
  CAST(d AS INT64) AS d,
  e,
  f
FROM
  `example.dataset.table`

这是更改架构的示例,但只要您可以使用BQ查询获得结果,就可以应用此示例。