memeddev/mysql-to-google-bigquery

MySQL 到 Google BigQuery 同步工具

v0.3 2020-08-21 18:23 UTC

README

MySQL to Google BigQuery Logo

MySQL 到 Google BigQuery 同步工具

目录

工作原理

没有提供排序列时的步骤

  • 统计 MySQL 表的行数
  • 统计 BigQuery 表的行数
  • MySQL 行数 > BigQuery 行数?
  • 获取行差异,分批处理,每批 XXXXX 行

提供排序列时的步骤

  • 从 MySQL 表中获取排序列的最大值
  • 从 BigQuery 表中获取排序列的最大值
  • MySQL 的最大值 > BigQuery 的最大值?
  • 删除所有排序列值为最大 BigQuery 值的行,以确保在 BigQuery 中不会创建重复记录
  • 从 BigQuery 表中获取排序列的最大值
  • 基于新的最大 BigQuery 值获取行差异,分批处理,每批 XXXXX 行

最后三个步骤

  • 将 MySQL 行导出到 JSON
  • 将 JSON 发送到 BigQuery
  • 重复,直到所有批次都发送完毕

提示:创建一个 cron 作业,以 15 分钟间隔(尊重负载作业 配额策略)持续同步表

要求

支持以下 PHP 版本

  • PHP 7
  • HHVM
  • PDO 扩展与 MySQL 驱动程序

使用方法

使用composer下载库

$ composer require memeddev/mysql-to-google-bigquery

现在,在项目的根目录下定义一些环境变量或创建一个 .env 文件,替换值

BQ_PROJECT_ID=bigquery-project-id
BQ_KEY_FILE=google-service-account-json-key-file.json
BQ_DATASET=bigquery-dataset-name

DB_DATABASE_NAME=mysql-database-name
DB_USERNAME=mysql_username
DB_PASSWORD=mysql_password
DB_HOST=mysql-host
DB_PORT=3306

IGNORE_COLUMNS=password,hidden_column,another_column

PS:要创建 Google 服务帐户 JSON 密钥文件,请访问 https://console.cloud.google.com/apis/credentials/serviceaccountkey

运行

vendor/bin/console sync table-name

如果您想自动在 BigQuery 中创建表

vendor/bin/console sync table-name --create-table

如果您想在 BigQuery 中删除(并创建)表进行完整转储

vendor/bin/console sync table-name --delete-table

致谢

❤️ Memed SA (memed.com.br)

许可证

MIT 许可证,请参阅 LICENSE