php-etl / sql-plugin
此插件允许您在ETL管道中执行SQL查询
v0.4.4
2023-07-10 07:44 UTC
Requires
- php: ^8.2
- nikic/php-parser: ^4.10
- php-etl/configurator-contracts: 0.8.*
- php-etl/fast-map-plugin: *
- php-etl/packaging: *
- php-etl/satellite-toolbox: *
- symfony/config: ^6.0
- symfony/expression-language: ^6.0
Requires (Dev)
- ext-pdo: *
- friendsofphp/php-cs-fixer: ^3.0
- infection/infection: ^0.26.18
- mikey179/vfsstream: ^1.6
- php-etl/phpunit-extension: *
- php-etl/sql-flow: *
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.0
- rector/rector: ^0.15
This package is auto-updated.
Last update: 2024-09-04 10:01:20 UTC
README
这是什么?
SQL插件允许您编写自己的SQL查询并在管道堆栈中使用它们。
SQL,结构化查询语言,是一种用于操作数据库的语言。
安装
composer require php-etl/sql-plugin
使用方法
数据库连接
SQL插件使用PDO扩展,并依赖于其接口,通过dsn
、username
和password
参数访问数据库。
在任何情况下,无论是定义提取器、加载器还是查找时,此连接都必须存在。
connection: dsn: 'mysql:host=127.0.0.1;port=3306;dbname=kiboko' username: username password: password
可以在连接时指定选项,使用options
。目前,只能指定数据库连接是否应该持久化。
connection: # ... options: persistent: true
构建提取器
sql: extractor: query: 'SELECT * FROM table1' connection: dsn: 'mysql:host=127.0.0.1;port=3306;dbname=kiboko' username: username password: password
构建查找
sql: lookup: query: 'SELECT * FROM table2 WHERE bar = foo' merge: map: - field: '[options]' expression: 'lookup["name"]' connection: dsn: 'mysql:host=127.0.0.1;port=3306;dbname=kiboko' username: username password: password
构建加载器
sql: loader: query: 'INSERT INTO table1 VALUES (bar, foo, barfoo)' connection: dsn: 'mysql:host=127.0.0.1;port=3306;dbname=kiboko' username: username password: password
高级使用
在查询中使用参数
感谢SQL插件,您可以使用参数编写查询。
如果您使用命名参数(:param
)编写预定义语句,配置中的参数键将是您的参数名称,不带:
。
sql: loader: query: 'INSERT INTO table1 VALUES (:value1, :value2, :value3)' parameters: - key: value1 value: '@=input["value1"]' - key: value2 value: '@=input["value3"]' - key: value3 value: '@=input["value3"]' # ...
如果您使用问号标记(?
)的预定义语句,配置中的参数键将是其在语句中的位置(从1开始)。
sql: loader: query: 'INSERT INTO table1 VALUES (?, ?, ?)' parameters: - key: 1 value: '@=input["value1"]' - key: 2 value: '@=input["value3"]' - key: 3 value: '@=input["value3"]' # ...
创建查询前和查询后查询
在某些情况下,您可能需要运行查询以便最好地准备执行管道。
查询前
查询前将在执行配置中编写的查询之前执行。通常,这些是设置数据库的查询。
sql: before: queries: - 'CREATE TABLE foo (id INTEGER NOT NULL, value VARCHAR(255) NOT NULL)' - 'INSERT INTO foo (id, value) VALUES (1, "Lorem ipsum dolor")' - 'INSERT INTO foo (id, value) VALUES (2, "Sit amet consecutir")' # ...
查询后
查询后将执行配置中编写的查询之后。通常,这些是清理数据库的查询。
sql: after: queries: - 'DROP TABLE foo' # ...