keboola/db-extractor-common

Keboola数据库提取器公共库

17.1.0 2024-09-12 10:53 UTC

README

用于创建特定供应商数据库提取器的公共类。

使用DBC提取器

开发和运行测试

docker compose build
docker compose run --rm tests  # runs the tests

用法

将库添加到组件的composer中

php composer.phar require db-extractor-common

composer.json

{
  "require": "db-extractor-common": ^8.0
}

用法

创建入口脚本文件 run.php,例如为MySQL提取器: https://github.com/keboola/db-extractor-mysql/blob/master/src/run.php

请注意,从版本7开始,支持配置行,因此不需要支持.yml配置或表数组配置。

config.json文件加载$config。您必须为data_dirextractor_class键提供值。extractor_class是派生提取器的主类,它应该扩展Keboola\DbExtractor\Extractor\Extractor

您需要实现以下方法

  • createConnection(array $params)
  • testConnection()
  • simpleQuery(array $table, array $columns = array()): string
  • getTables(?array $tables = null): array;

注意,为了支持标识符清理,getTables方法应返回每个列的sanitizedName属性。这个sanitizedName应该使用Keboola\php-utils\sanitizeColumnName创建

如果您想实现增量获取,必须实现
validateIncrementalFetching(array $table, string $columnName, ?int $limit = null): void
请参见Common类的示例: https://github.com/keboola/db-extractor-common/blob/master/src/Keboola/DbExtractor/Extractor/Common.php#L52

您的提取器类命名空间应为Keboola\DbExtractor\Extractor,类的名称应与数据库供应商名称对应,例如PgSQL、Oracle、Impala、Firebrid、DB2等。

请检查上述现有实现以获取帮助。

检查用户名

检查用户名功能比较 - KBC_REALUSER环境变量的值 - 和配置中数据库用户的用户名。

如果启用,值必须相同才能运行组件。

如果使用服务帐户,则跳过检查。更多信息请参阅UsernameChecker类。

示例图像/堆栈参数

{
  "checkUsername": {
    "enabled": true
  }
}

服务帐户可以由正则表达式定义

{
  "checkUsername": {
    "enabled": true,
    "serviceAccountRegexp": "~^service_~i"
  }
}

或用户帐户可以由正则表达式定义(逻辑相反)

{
  "checkUsername": {
    "enabled": true,
    "userAccountRegexp": "~^[0-9]{3}_"
  }
}

许可证

MIT许可,请参阅LICENSE文件。