Rpj*_*Rpj 5 database-migration liquibase flyway google-bigquery google-cloud-platform
如何管理Google BigQuery的架构迁移,我们过去曾使用Liquibase和Flyway。我们可以使用哪种工具来管理跨开发/登台环境的架构修改等(例如,添加新列)。
小智 5
Flyway是一种非常流行的数据库迁移工具,现在提供对 BigQuery 的测试版支持,同时正在等待认证。
在回答简短的调查后,您可以在此处访问测试版本: https: //flywaydb.org/documentation/database/big-query 。
我已经从命令行对其进行了测试,效果非常好!我花了大约一个小时熟悉了Flyway的配置,现在用命令来调用它yarn。
以下是具有以下文件结构的 NodeJS 项目的示例:
package.json
fireway/
<SERVICE_ACCOUNT_JSON_FILE>
flyway.conf
migrations/
V1_<YOUR_MIGRATION>.sql
Run Code Online (Sandbox Code Playgroud)
包.json
{
...
"scripts": {
...
"migrate": "flyway -configFiles=flyway/flyway.conf migrate"
},
...
}
Run Code Online (Sandbox Code Playgroud)
和Flyway.conf:
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
Run Code Online (Sandbox Code Playgroud)
yarn migrate然后,只要有新的迁移需要申请,您就可以随时致电。
Jof*_*fre -3
根据BQ 文档,您可以向架构添加一行,无需任何额外的过程。
对于更复杂的转换,如果可以在 SQL 查询中解决,您只需运行该查询,将目标表设置为源表(尽管我建议创建表的备份,以防出现问题)。
例子
假设我有一个表,其中有一列是整数(column d),但在插入时它被写为字符串。我可以通过将其自身设置为目标表并运行如下查询来修改该表:
SELECT
a,
b,
c,
CAST(d AS INT64) AS d,
e,
f
FROM
`example.dataset.table`
Run Code Online (Sandbox Code Playgroud)
这是更改架构的示例,但只要您可以通过 BQ 查询获得结果,就可以应用此示例。