fos1/sf-s-q-l-tools-plugin

Doctrine SQL 工具插件为 Symfony1。按照顺序执行具有触发器、存储过程和事件的 SQL 文件的任务。与任何类型的数据库引擎兼容。

安装: 241

依赖项: 0

建议者: 0

安全: 0

星级: 0

关注者: 7

分支: 0

开放问题: 0

类型:symfony1-plugin

v1.0.4 2015-08-20 21:39 UTC

This package is auto-updated.

Last update: 2024-08-27 01:38:48 UTC


README

sfSQLToolsPlugin 是一个 symfony1 插件,提供了一种简单的方法来执行特定于数据库的功能,例如存储过程、触发器、事件以及其他 SQL 命令。

内容

它为您提供一项任务来执行带有附加选项的 SQL 文件。

安装

  • 下载插件

将插件添加到您的 composer.json 需求中

  "require": {
    ...
    "fos1/sf-s-q-l-tools-plugin": "1.0.*",
    ...
  • 安装插件:编辑您的 ProjectConfiguration.class.php 文件
  $this->enablePlugins(array('sSQLToolsPlugin');
  • 清除缓存 symfony cc

用法

symfony sql:execute [--application[="..."]] [--env[="..."]] [--dir[="..."]] [--dir-depth[="..."]] [--file[="..."]] [--exclude[="..."]] [--delimiter[="..."]]

选项

  • --application 应用程序名称(默认:1)
  • --env 环境(默认:dev)
  • --dir 搜索 *.sql 文件所在的目录(默认:data/sql/tasks
  • --dir-depth 搜索目录深度(默认:0)
  • --file 要执行的一个文件
  • --exclude 要排除的文件模式或以逗号分隔的文件列表
  • --delimiter 查询分隔符(默认:~)

描述

sql:execute 任务读取搜索目录中的 *.sql 文件,然后按顺序运行它们。

  • 调用方法:

    $ ./symfony sql:execute

  • 要在特定环境中工作,请使用 --env 选项运行此命令:

    $ ./symfony sql:execute --env=prod

  • 要使用特定应用程序的数据库设置,请使用 --application 选项:

    $ ./symfony sql:execute --application=frontend

  • 如果您需要自定义 *.sql 位置目录名(默认为 "data/sql/tasks"),则可以传递一个 --dir 选项:

    $ ./symfony sql:execute --dir=data/my/folder

  • 要排除 --dir 文件夹中的一个或多个文件,请使用 --exclude 选项。要从 "data/my/folder" 目录排除 "00-misc.sql" 文件,请使用:

    $ ./symfony sql:execute --dir=data/my/folder --exclude="00-misc.sql"

  • 要从 "data/my/folder" 目录排除多个文件,请用逗号分隔:

    $ ./symfony sql:execute --dir=data/my/folder --exclude="00-misc.sql, 10-triggers.sql, 20-events.sql"

  • 或者,您可以使用 glob 模式(排除所有包含单词:U_"old"_ 和 "backup" 的文件名)

    $ ./symfony sql:execute --dir=data/my/folder --exclude="old,backup"

  • 要只运行特定的 SQL 文件,请使用 --file

    $ ./symfony sql:execute --file=data/sql/tasks_1/alter-tables.sql

  • 或者要运行目录 "data/sql/tasks_1" 中的特定文件:

    $ ./symfony sql:execute --dir=data/sql/tasks_1 --file=alter-tables.sql

  • 要搜索到子目录一定级别的 *.sql 文件,请使用 --dir-depth 选项:

    $ ./symfony sql:execute --dir-depth=5

  • 要递归地搜索 *.sql 文件,请将 "*" 传递给 --dir-depth 选项:

    $ ./symfony sql:execute --dir-depth=*

示例

这是您的文件 "00-procedures.sql" 的内容(MySQL)

        CREATE PROCEDURE `simpleproc`(OUT param1 INT)
        BEGIN
            SELECT COUNT(*) INTO param1 FROM t;
        END
        ~
        CREATE FUNCTION `hello`(s CHAR(20)) RETURNS CHAR(50)  RETURN CONCAT('Hello, ',s,'!');
        ~
        CREATE PROCEDURE molo() SELECT 'Molo';
  • 现在,在 config/databases.yml 中设置您的 DBMS 连接(如果您还没有这样做)
  • 在开发环境中执行此过程: symfony sql:execute --env=dev --file=data/sql/00-procedures.sql
  • 运行此任务后,您应该得到以下输出
>> sql:execute start
>> sql:execute [00-procedures.sql] CREATE PROC...OUNT(*) INTO param1 FROM t; END
>> sql:execute [00-procedures.sql] CREATE FUNC...RETURN CONCAT('Hello, ',s,'!');
>> sql:execute [00-procedures.sql] CREATE PROCEDURE molo() SELECT 'Molo';
>> sql:execute end

单元测试

  • 单元测试(14/14)成功完成。
  • 测试用
    • MySQL 5.0.84
    • MySQL 5.1.40
    • PostgreSQL 8.3.8