如何管理Google BigQuery的架构迁移,我们过去曾使用过Liquibase和Flyway。我们可以使用哪种工具来管理架构修改等(例如,在dev / staging环境中添加新列)。
答案 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查询获得结果,就可以应用此示例。