1

我有一个运行以下选择的程序:

select distinct concat( 'php /home/rudyerd-systems/frontend/ClientStatementGenerator.php ', left(user(), locate('@',user())-1), space(1), ca.client_id, space(1), date_format( @pTradingPeriodMonth, '%y%m' ), space(1), date_format( @pTradingPeriodMonth, '%y%m' ),
                    ' > /home/rudyerd-systems.sco/frontend/bash/new_statement_test.html' )
from   ca_client_account ca,
       ca_tranche tr
where  @pTradingPeriodMonth    between tr.dt_value and ifnull( tr.dt_withdrawal, @pTradingPeriodMonth ) and
       ca.client_account_id   = tr.client_account_id
order  by ca.client_id;

并产生以下结果:

| php /home/rudyerd-systems/frontend/ClientStatementGenerator.php scorbet ATP 1205 1205 > /home/rudyerd-systems.sco/frontend/bash/new_statement_test.html                                                                                                          |
| php /home/rudyerd-systems/frontend/ClientStatementGenerator.php scorbet BLB 1205 1205 > /home/rudyerd-systems.sco/frontend/bash/new_statement_test.html                                                                                                          |
| php /home/rudyerd-systems/frontend/ClientStatementGenerator.php scorbet CAR 1205 1205 > /home/rudyerd-systems.sco/frontend/bash/new_statement_test.html                                                                                                          |
| php /home/rudyerd-systems/frontend/ClientStatementGenerator.php scorbet CDR 1205 1205 > /home/rudyerd-systems.sco/frontend/bash/new_statement_test.html                                                                                                          |
| php /home/rudyerd-systems/frontend/ClientStatementGenerator.php scorbet CSP 1205 1205 > /home/rudyerd-systems.sco/frontend/bash/new_statement_test.html                                                                                                          |
| php /home/rudyerd-systems/frontend/ClientStatementGenerator.php scorbet DGC 1205 1205 > /home/rudyerd-systems.sco/frontend/bash/new_statement_test.html                                                                                                          |
| php /home/rudyerd-systems/frontend/ClientStatementGenerator.php scorbet FDR 1205 1205 > /home/rudyerd-systems.sco/frontend/bash/new_statement_test.html                                                                                                          |
| php /home/rudyerd-systems/frontend/ClientStatementGenerator.php scorbet FVN 1205 1205 > /home/rudyerd-systems.sco/frontend/bash/new_statement_test.html                                                                                                          |
| php /home/rudyerd-systems/frontend/ClientStatementGenerator.php scorbet JLM 1205 1205 > /home/rudyerd-systems.sco/frontend/bash/new_statement_test.html                                                                                                          |
| php /home/rudyerd-systems/frontend/ClientStatementGenerator.php scorbet JRA 1205 1205 > /home/rudyerd-systems.sco/frontend/bash/new_statement_test.html                                                                                                          |
| php /home/rudyerd-systems/frontend/ClientStatementGenerator.php scorbet JRP 1205 1205 > /home/rudyerd-systems.sco/frontend/bash/new_statement_test.html                                                                                                          |
| php /home/rudyerd-systems/frontend/ClientStatementGenerator.php scorbet MJO 1205 1205 > /home/rudyerd-systems.sco/frontend/bash/new_statement_test.html                                                                                                          |
| php /home/rudyerd-systems/frontend/ClientStatementGenerator.php scorbet MPW 1205 1205 > /home/rudyerd-systems.sco/frontend/bash/new_statement_test.html                                                                                                          |
| php /home/rudyerd-systems/frontend/ClientStatementGenerator.php scorbet NTC 1205 1205 > /home/rudyerd-systems.sco/frontend/bash/new_statement_test.html                                                                                                          |
| php /home/rudyerd-systems/frontend/ClientStatementGenerator.php scorbet RJA 1205 1205 > /home/rudyerd-systems.sco/frontend/bash/new_statement_test.html                                                                                                          |
| php /home/rudyerd-systems/frontend/ClientStatementGenerator.php scorbet RMM 1205 1205 > /home/rudyerd-systems.sco/frontend/bash/new_statement_test.html                                                                                                          |
| php /home/rudyerd-systems/frontend/ClientStatementGenerator.php scorbet SJC 1205 1205 > /home/rudyerd-systems.sco/frontend/bash/new_statement_test.html                                                                                                          |
| php /home/rudyerd-systems/frontend/ClientStatementGenerator.php scorbet UDB 1205 1205 > /home/rudyerd-systems.sco/frontend/bash/new_statement_test.html 

我想将该过程的结果直接输出到 Linux 命令行,以便创建一个包含每个变量的 HTML 页面。此过程将从我要在其中创建 HTML 文件的文件夹中的 bash 脚本运行。

为了完整性,这是完整的过程。

-- ---------------------------------------------------------------------------------
-- pUIGetCliStmtGenList
--
-- This procedure returns the Clients who statements need to be generated for
--
-- ---------------------------------------------------------------------------------

drop procedure if exists pUiGetCliStmtGenList;
delimiter //

create procedure pUiGetCliStmtGenList(
  IN  pTradingPeriodMonth      DATE,
  IN  pUsername                VARCHAR,
  IN  pPassword                VARCHAR,
  OUT pResult                  INT
)
MODIFIES SQL DATA
COMMENT 'Gathers the list of people a statement needs to be created for'
begin
 --
  declare vClient_id           VARCHAR(3);
  declare vAmtTradedSystemCcy  DECIMAL(13,2);
  declare vCount               INT;
  --
  declare EXIT handler for SQLWARNING, SQLEXCEPTION call pRdHandleError( 10000, 'pUiGetCliStmtGenList', vHint );
  --  ***********************************************************************************************************
  set vHint = pTradingPeriodMonth;
  set pResult = 0;

  SELECT DISTINCT CONCAT( 'php /home/rudyerd-systems/frontend/ClientStatementGenerator.php ', left(user(), locate('@',user())-1), space(1), ca.client_id, space(1), date_format( @pTradingPeriod, '%y%m' ), space(1), date_format( @pTradingPeriod, '%y%m' ),
                    ' > /home/rudyerd-systems.sco/frontend/bash/'ca.client_id''@pTradingPeriod'statement.html' )
  FROM   ca_client_account ca,
         ca_tranche tr
  INTO     
  WHERE  @pTradingPeriodMonth    between tr.dt_value and ifnull( tr.dt_withdrawal, @pTradingPeriodMonth ) and
         ca.client_account_id   = tr.client_account_id
  ORDER BY ca.client_id;
  --
  -- If there are no clients
    if vCount <> 0 then
     call pRdHandleError( 1002, 'pUiGetCliStmtGenFlag', vHint );
    end if; 
  --
  --   
  ELSE
  -- Output to Linux Command Line and Generate the HTML pages

  -- Then Convert the pages to pdf
  -- 
  set pResult = 1;
  --
end;
//

delimiter ;
4

2 回答 2

1

假设输出 show 旨在成为一个可运行的脚本,并且您将字段值更改>>>或将其中一个字段值添加到输出文件名以便它们是唯一的,这可能是您所追求的:

mysql -B -u username -p dbname < script.sql | sed 's/|//' | sh

sed命令将删除管道字符(如果存在)。将整个事情通过管道sh执行使用给定参数运行的每一行php并将输出重定向到给定文件。您可能需要更改mysql参数以满足您的需要。

于 2012-06-05T13:03:47.010 回答
0

如果您有权访问服务器,以便创建文件,则可以将输出导出为 CSV 文件,例如:

SELECT field1,field2 FROM table1
INTO OUTFILE '/home/output.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'

您可以使用另一种脚本语言/工具编写解析器或修改条目以满足您的需求......

于 2012-06-05T11:19:58.010 回答