如何在Google BigQuery中管理架构迁移

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 查询获得结果,就可以应用此示例。

  • 谢谢乔弗雷。但我的问题更多是关于如何在特定环境中以及跨环境中管理架构迁移。由于一个表可能会经历多次更改,因此我们需要一个框架(例如 liquibase 或 Flyway)来管理我们的架构迁移,以便可以根据需要灵活地部署或回滚更改。我想知道该产品有哪些工具可用。 (2认同)