php-etl/sql-plugin

此插件允许您在ETL管道中执行SQL查询

安装次数: 3,013

依赖项: 0

建议者: 1

安全性: 0

星标: 0

关注者: 3

分支: 1

公开问题: 0

类型:gyroscops-plugin

v0.4.4 2023-07-10 07:44 UTC

This package is auto-updated.

Last update: 2024-09-04 10:01:20 UTC


README

Mutations PHPUnit Quality PHPStan level 5 PHPStan level 6 PHPStan level 7 PHPStan level 8 PHP

这是什么?

SQL插件允许您编写自己的SQL查询并在管道堆栈中使用它们。

SQL,结构化查询语言,是一种用于操作数据库的语言。

安装

composer require php-etl/sql-plugin

使用方法

数据库连接

SQL插件使用PDO扩展,并依赖于其接口,通过dsnusernamepassword参数访问数据库。

在任何情况下,无论是定义提取器、加载器还是查找时,此连接都必须存在。

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'
  # ...