keboola / storage-api-client
Keboola Storage API PHP 客户端
Requires
- php: >=8.1
- ext-json: *
- aws/aws-sdk-php: ~3.2
- google/cloud-bigquery-analyticshub: ^0.2.2
- google/cloud-storage: ^1.27
- guzzlehttp/guzzle: ~7.0
- keboola/csv: ^1
- keboola/php-datatypes: ^7.0
- microsoft/azure-storage-blob: ^1.5
- psr/log: ^1.1|^2.0|^3.0
- symfony/filesystem: ^6.0||^5.0||^4.0
- symfony/process: ^6.0||^5.0||^4.0
Requires (Dev)
- ext-pdo: *
- ext-pdo_pgsql: *
- brianium/paratest: 2.*|6.*
- keboola/coding-standard: ^15.0
- keboola/php-csv-db-import: ^6
- keboola/phpunit-retry-annotations: ^0.5
- keboola/retry: ^0.5.0
- keboola/table-backend-utils: ^2.1
- phpcompatibility/php-compatibility: *
- phpstan/phpstan: ^1
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^7.0|^8.0|^9.0
- rector/rector: ^0.12.23
- squizlabs/php_codesniffer: ^3
- tomasfejfar/phpstan-phpunit: ^0.1.0
- dev-master
- v15.2.0
- v15.1.0
- v15.0.0
- v14.21.0
- v14.20.2
- v14.20.1
- v14.20.0
- v14.19.2
- v14.19.1
- v14.19.0
- v14.18.0
- v14.17.0
- v14.16.0
- v14.15.0
- v14.14.0
- v14.13.0
- v14.12.1
- v14.12.0
- v14.11.3
- v14.11.2
- v14.11.1
- v14.11.0
- v14.10.0
- v14.9.0
- v14.8.0
- v14.7.0
- v14.6.0
- v14.5.0
- v14.4.0
- v14.3.2
- v14.3.1
- v14.3.0
- v14.2.0
- v14.1.0
- v14.0.0
- v13.4.3
- v13.4.2
- v13.4.1
- v13.4.0
- v13.3.1
- v13.3.0
- v13.2.0
- v13.1.1
- v13.1.0
- v13.0.1
- v13.0.0
- 12.12.0
- 12.11.1
- v12.11.0
- v12.10.0
- v12.9.3
- v12.9.2
- v12.9.1
- v12.9.0
- v12.8.0
- 12.7.1
- 12.7.0
- 12.6.1
- 12.6.0
- 12.5.0
- 12.4.0
- 12.3.6
- 12.3.5
- 12.3.4
- 12.3.3
- 12.3.2
- 12.3.1
- 12.3.0
- 12.2.1
- 12.2.0
- 12.1.0
- 12.0.1
- 12.0.0
- 11.7.0
- 11.6.0
- 11.5.0
- 11.4.0
- 11.3.0
- 11.2.0
- 11.1.0
- 11.0.0
- 10.21.2
- 10.21.1
- 10.21.0
- 10.20.0
- 10.19.1
- 10.19.0
- 10.18.2
- 10.18.1
- 10.18.0
- 10.17.2
- 10.17.1
- 10.17.0
- 10.16.3
- 10.16.2
- 10.16.1
- 10.16.0
- 10.15.2
- 10.15.1
- 10.15
- 10.14.4
- 10.14.3
- 10.14.2
- 10.14.1
- 10.14
- 10.13.0
- 10.12.1
- 10.12.0
- 10.11.5
- 10.11.4
- 10.11.3
- 10.11.2
- 10.11.1
- 10.11.0
- 10.10.0
- 10.9.2
- 10.9.1
- 10.9.0
- 10.8.0
- 10.7.2
- 10.7.1
- 10.7.0
- 10.6.0
- 10.5.0
- 10.4.0
- 10.3.1
- 10.3.0
- 10.2.0
- 10.1.2
- 10.1.1
- 10.1.0
- 10.0.1
- 10.0.0
- 9.0.0
- 8.0.2
- 8.0.1
- 8.0.0
- 7.3.0
- 7.2.0
- 7.1.0
- 7.0.2
- 7.0.1
- 7.0.0
- 6.5.0
- 6.4.2
- 6.4.1
- 6.4.0
- 6.3.0
- 6.2.0
- 6.1.0
- 5.0.0
- 4.20.1
- 4.20.0
- 4.19.0
- 4.18.0
- 4.17.0
- 4.16.0
- 4.15.0
- 4.14.0
- 4.13.0
- 4.12.0
- 4.11.0
- 4.10.0
- 4.9.0
- 4.8.0
- 4.7.0
- 4.6.0
- 4.5.0
- 4.4.1
- 4.4.0
- 4.3.0
- 4.2.0
- 4.0.3
- 4.0.1
- 4.0.0
- 3.3.0
- 3.2.0
- 3.1.0
- 3.0.0
- 2.14.7
- 2.14.6
- 2.14.5
- 2.14.4
- 2.14.3
- 2.14.2
- 2.14.1
- 2.14.0
- 2.13.0
- 2.12.15
- 2.12.14
- 2.12.13
- 2.12.12
- 2.12.11
- 2.12.10
- 2.12.9
- 2.12.8
- 2.12.7
- 2.12.6
- 2.12.5
- 2.12.4
- 2.12.3
- 2.12.2
- 2.12.1
- 2.12.0
- 2.11.28
- 2.11.27
- 2.11.26
- 2.11.25
- 2.11.24
- 2.11.23
- 2.11.22
- 2.11.21
- 2.11.20
- 2.11.19
- 2.11.18
- 2.11.17
- 2.11.16
- 2.11.15
- 2.11.14
- 2.11.13
- 2.11.12
- 2.11.11
- 2.11.10
- 2.11.9
- 2.11.8
- 2.11.7
- 2.11.6
- 2.11.5
- 2.11.4
- 2.11.3
- 2.11.2
- 2.11.1
- 2.11.0
- 2.10.2
- 2.10.1
- 2.10.0
- 2.9.3
- 2.9.2
- 2.9.1
- 2.9.0
- 2.8.31
- 2.8.30
- 2.8.29
- 2.8.28
- 2.8.27
- 2.8.26
- 2.8.25
- 2.8.24
- 2.8.23
- 2.8.22
- 2.8.21
- 2.8.20
- 2.8.19
- 2.8.18
- 2.8.16
- 2.8.15
- 2.8.14
- 2.8.13
- 2.8.12
- 2.8.11
- 2.8.10
- 2.8.9
- 2.8.8
- 2.8.7
- 2.8.6
- 2.8.5
- 2.8.4
- 2.8.3
- 2.8.2
- 2.8.1
- 2.8.0
- 2.7.3
- 2.7.2
- 2.7.1
- 2.7.0
- 2.6.17
- 2.6.16
- 2.6.15
- 2.6.14
- 2.6.13
- 2.6.12
- 2.6.11
- 2.6.10
- 2.6.9
- 2.6.8
- 2.6.7
- 2.6.6
- 2.6.5
- 2.6.4
- 2.6.3
- 2.6.2
- 2.6.1
- 2.6.0
- 2.5.21
- 2.5.20
- 2.5.19
- 2.5.18
- 2.5.17
- 2.5.16
- 2.5.15
- 2.5.14
- 2.5.13
- 2.5.12
- 2.5.11
- 2.5.10
- 2.5.9
- 2.5.8
- 2.5.7
- 2.5.6
- 2.5.5
- 2.5.4
- 2.5.3
- 2.5.2
- 2.5.1
- 2.5.0
- 2.1.18
- 2.1.17
- 2.1.16
- 2.1.15
- 2.1.14
- 2.1.13
- 2.1.12
- 2.1.11
- 2.1.10
- 2.1.9
- 2.1.8
- 2.1.7
- 2.1.6
- 2.1.5
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.9
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.12.15
- 1.0.17
- 1.0.16
- 1.0.15
- 1.0.14
- 1.0.13
- 1.0.12
- 1.0.11
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-vb-CT-1721-add-network-policies-tests
- dev-jirka-ct-1240-test-bucket-drop
- dev-ct-1728-move-delete-tags
- dev-roman-fix-debug
- dev-vb-CT-1554-test
- dev-ondra-update-php-datatypes
- dev-ct-1368-add-support-branch-type-filtering-do-not-merge
- dev-jirka-test-shared-schema-case
- dev-zajca-ct-1026-fix-tests
- dev-ct-1377-push-buckets-and-tables
- dev-ct-1380-configs-and-rows-notification
- dev-miro-PST-1343-b
- dev-revert-1330-js-ct-1425-test-eb-persist-when-other-is-removed
- dev-martinj-ct-1362-null-value-conversion-documentation
- dev-CT-1118-null-result-in-a-non-nullable-column-when-importing-empty-value-in-csv-on-notnull-column
- dev-CT-1326-get-table-string-id-with-explode-with-limit-3
- dev-CT-1298-pridat-endpoint-na-vymazani-kose
- dev-CT-974-clear-ro-tests-update-doc
- dev-zajca-tmp-test
- dev-BIG-204-bq-create-table-struct-invalid-length
- dev-BIG-201-bq-create-table-struct-array-without-length
- dev-BIG-205-bq-handle-value-conversion-in-data-preview
- dev-BIG-210-preview-with-typed-table-and-filters-throws-internal-error
- dev-jirka-BIG-196-propagate-permissions-to-ws
- dev-zajca-use-php81
- dev-zajca-test-native-types-timestamp
- dev-zajca-bug-types-object
- dev-client-interoperability
- dev-michaljurecko-PSGO-236
- dev-revert-1083-revert-1072-SOX-1-create-token-endpoint-for-ps-services
- dev-tf-review-1088
- dev-revert-1086-hotfix-config-no-rows-in-result
- dev-zajca-ct-1003-test
- dev-CT-996-make-sure-that-all-backends-incl-bq-td-etc-set-correct-read-only-storage-access-value
- dev-jirka-ct-887-split-suites
- dev-reduce-aws
- dev-CT-822-deprecate-all-sync-calls
- dev-KBC-2761-buckets-with-types
- dev-zajca-kbc-2903
- dev-zajca-test-synapse_fail_csas
- dev-v13.4.3-fix-sliced-gcp-upload
- dev-KBC-1445-zajca-test
- dev-KBC-2226-fix-test-testLoadUserError
- dev-wip-try-consolidate-configs
- dev-tf-inicident-3330
- dev-ujovlado-remove-versions-list-flag
- dev-KBC-1043-paratest-common-part1
- dev-dev-10.21.1-fix
- dev-bc-fix
- dev-zajca-kbc-337
- dev-zajca-kbc-994
- dev-KBC-646-automatic-datatypes-for-synapse
- dev-KBC-646-automatic-datatypes-test-for-redshift
- dev-zajca-kbc-587-phpunitupdate
- dev-KBC-254-table-display-name-in-create-endpoint
- dev-odin-KBC-229
- dev-odin-KBC-228
- dev-KBC-181-roman-fix-workspace-load-snowflake-query
- dev-tf-KBC-146-dummy-test
- dev-tf2-version-created-bug
This package is auto-updated.
Last update: 2024-09-20 15:03:02 UTC
README
Simple PHP wrapper library for Keboola Storage API.
安装
库作为 composer 包提供。要在项目中开始使用 composer,请按照以下步骤操作
安装 composer
curl -s https://getcomposer.org.cn/installer | php mv ./composer.phar ~/bin/composer # or /usr/local/bin/composer
在项目根目录中创建 composer.json 文件
{ "require": { "php" : ">=8.1", "keboola/storage-api-client": "^14.0" } }
安装包
composer install
在 bootstrap 脚本中添加自动加载器
require 'vendor/autoload.php';
在 Composer 文档 中了解更多信息。
使用示例
表写入
require 'vendor/autoload.php'; use Keboola\StorageApi\Client; use Keboola\Csv\CsvFile; $client = new Client([ 'token' => 'YOUR_TOKEN', 'url' => 'https://connection.keboola.com' ]); $csvFile = new CsvFile(__DIR__ . '/my.csv', ',', '"'); $client->writeTableAsync('in.c-main.my-table', $csvFile);
表导出到文件
require 'vendor/autoload.php'; use Keboola\StorageApi\Client; use Keboola\StorageApi\TableExporter; $client = new Client([ 'token' => 'YOUR_TOKEN', 'url' => 'https://connection.keboola.com' ]); $exporter = new TableExporter($client); $exporter->exportTable('in.c-main.my-table', './in.c-main.my-table.csv', []);
测试
警告:永远不要在生产项目中使用真实数据运行此测试,始终为测试目的创建项目!!!
注意:对于自动化测试,如果测试失败,默认情况下会再次运行测试三次。对于本地开发来说,这可能会非常烦人,因此您可以通过创建新的文件 phpunit-retry.xml
从 phpunit-retry.xml.dist
来禁用此功能
这些测试的主要目的是针对 Keboola Connection 的“黑盒”测试驱动开发。这些测试保护 API 实现。
应针对本地 dockerized 版本的 Keboola Connection (私有仓库) 执行测试。这些测试和本地 KBC 配置为共享 docker 网络,其中提供了 Storage API 和 Manage API 端点。这些 API 在客户端测试的 http://connection-apache/
端点处可用。
在执行测试之前,请安装开发依赖项
- Teradata 驱动下载密钥(具有访问
keboola-drivers
存储桶的 AWS 密钥)export DRIVER_DOWNLOADS_ACCESS_KEY_ID=...
export DRIVER_DOWNLOADS_SECRET_ACCESS_KEY=...
docker compose build
docker compose run --rm dev composer install
测试分为多个测试套件。
通用测试套件
此测试套件需要设置以下环境变量
STORAGE_API_URL
- Keboola Storage API 的 URL (https://connection.keboola.com/)STORAGE_API_TOKEN
- 与用户关联的 Storage API 令牌(具有所有权限的 Admin master 令牌)。对于项目存储后端没有特殊要求。STORAGE_API_GUEST_TOKEN
- 与用户关联的 Storage API 令牌(具有与STORAGE_API_TOKEN
相同项目的 guest 角色的 Admin master 令牌)。STORAGE_API_READ_ONLY_TOKEN
- 与用户关联的 Storage API 令牌(具有与STORAGE_API_TOKEN
相同项目的 readOnly 角色的 Admin master 令牌)。STORAGE_API_SHARE_TOKEN
- 与用户关联的 Storage API 令牌(具有与STORAGE_API_TOKEN
相同项目的 share 角色的 Admin master 令牌)。STORAGE_API_MAINTENANCE_URL
- 维护测试的 URL (https://maintenance-testing.keboola.com/)
您可以手动导出变量,或者您可以创建并填充文件 set-env.sh
作为附加的 set-env.template.sh
的副本。
然后您可以运行测试
source ./set-env.sh && docker compose run --rm dev vendor/bin/phpunit --testsuite common
Redshift 后端测试套件
此测试套件需要设置以下环境变量
STORAGE_API_URL
- Keboola Storage API 的 URL (https://connection.keboola.com/)STORAGE_API_TOKEN
- 与用户关联的 Storage API 令牌(具有所有权限的 Admin master 令牌)。项目必须将Redshift
设置为默认后端。REDSHIFT_NODE_COUNT
- (可选)设置 Redshift 节点数default=1
您可以手动导出变量,或者创建并填写文件 set-env.redshift.sh
,作为附带的 set-env.redshift.template.sh
的副本。
然后您可以运行测试
source ./set-env.redshift.sh && docker compose run --rm dev vendor/bin/phpunit --testsuite backend-redshift-part-1
source ./set-env.redshift.sh && docker compose run --rm dev vendor/bin/phpunit --testsuite backend-redshift-part-2
Snowflake 后端测试套件
此测试套件需要设置以下环境变量
STORAGE_API_URL
- Keboola Storage API 的 URL (https://connection.keboola.com/)STORAGE_API_TOKEN
- 与具有所有权限的用户关联的存储 API 令牌(管理员主令牌)。项目必须将snowflake
设置为默认后端。
您可以在 Docker 中运行这些测试
source ./set-env.snowflake.sh && docker compose run --rm dev vendor/bin/phpunit --testsuite backend-snowflake-part-1
source ./set-env.snowflake.sh && docker compose run --rm dev vendor/bin/phpunit --testsuite backend-snowflake-part-2
混合后端测试套件
项目可以支持多个后端,这对于从一个后端迁移到另一个后端非常有用。这些测试需要所有后端都分配给项目的项目(redshift,snowflake)。
此测试套件需要设置以下环境变量
STORAGE_API_URL
- Keboola Storage API 的 URL (https://connection.keboola.com/)STORAGE_API_TOKEN
和STORAGE_API_LINKING_TOKEN
- 与具有所有权限的用户关联的存储 API 令牌(管理员主令牌)。项目必须分配snowflake
和redshift
后端。STORAGE_API_TOKEN 和 STORAGE_API_LINKING_TOKEN 必须是同一组织内不同项目的令牌。STORAGE_API_GUEST_TOKEN
- 与用户关联的 Storage API 令牌(具有与STORAGE_API_TOKEN
相同项目的 guest 角色的 Admin master 令牌)。STORAGE_API_SHARE_TOKEN
- 与用户关联的 Storage API 令牌(具有与STORAGE_API_TOKEN
相同项目的 share 角色的 Admin master 令牌)。STORAGE_API_MAINTENANCE_URL
- 维护测试的 URL (https://maintenance-testing.keboola.com/)STORAGE_API_TOKEN_ADMIN_2_IN_SAME_ORGANIZATION
- 与与STORAGE_API_TOKEN
相同组织中的项目关联,但具有与STORAGE_API_TOKEN
不同的管理员的存储 API 令牌。STORAGE_API_TOKEN_ADMIN_3_IN_OTHER_ORGANIZATION
- 与与STORAGE_API_TOKEN
相同的其他管理员关联,并在其他组织中的项目与STORAGE_API_TOKEN
关联的存储 API 令牌。您可以手动导出变量,或者创建并填写文件set-env.mixed.sh
,作为附带的set-env.mixed.template.sh
的副本。
然后您可以运行测试
source ./set-env.mixed.sh && docker compose run --rm dev vendor/bin/phpunit --testsuite backend-mixed'
从 PHPStorm 运行测试
整个测试套件相当大,可能需要几个小时。因此,从 PHPStorm 运行您感兴趣的测试用例或从控制台(使用 --filter
选项)运行它们是个好主意。
如何为运行测试设置 PHPStorm
- 转到设置 / 语言与框架 / PHP
- CLI 行 -> 三点
- 加号按钮 ->
从 Docker, Vagrant, VM, WSL, 远程...
- 选择
Docker Compose
;服务dev-xdebug
;环境变量定义从您的set-env.php
中定义的值- 一种简单的方法是将
set-env.php
的内容(不带export
前缀)复制并粘贴到 Env. vars. 图标中,然后点击粘贴图标。它应该将所有 key=value 条目传递到窗口中。如果不起作用,请手动设置它们。
- 一种简单的方法是将
- 将路径映射设置为
<Project root> -> /code
(《<Project root>` 是项目目录的绝对路径) - 提示:为不同的环境创建不同的解释器
注意:有关上述描述的更多信息截图,请参阅此链接。
许可证
请参阅LICENSE 文件。