memeddev / mysql-to-google-bigquery
MySQL 到 Google BigQuery 同步工具
v0.3
2020-08-21 18:23 UTC
Requires
- doctrine/dbal: ^2.5
- facile-it/doctrine-mysql-come-back: ^1.6
- google/cloud: ^0.11.1
- php-di/php-di: ^5.4
- symfony/console: ^3.1
- vlucas/phpdotenv: ^2.4
This package is auto-updated.
Last update: 2024-09-19 21:36:00 UTC
README
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