【问题标题】:Output to the screen and file recording from function postgresql从函数 postgresql 输出到屏幕和文件记录
【发布时间】:2013-05-28 12:12:19
【问题描述】:

有一个函数存根(我需要对其进行并行化,部分为它分离输入数据,并使其在来自这些部分的数据不同的计算机上产生)

-- Function: net_train(text[], integer)

-- DROP FUNCTION net_train(text[], integer);

CREATE OR REPLACE FUNCTION net_train(terms text[], perceptron_id integer)
  RETURNS void AS
$BODY$begin
-- stub
end;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION net_train(text[], integer)
  OWNER TO postgres;
COMMENT ON FUNCTION net_train(text[], integer) IS 'Comment: Train the Kohonen Neural Network with input data
Params:
 text[] terms - array of terms, on which net is train
 int perceptron_id - ID of perceptron to be added

除了检查它是否真的执行之外,是否有必要在其中插入一些操作,即我对 2 个感兴趣的问题的回答:

  1. 如何显示来自该函数的一些消息? (希望看到一个例子)
  2. 如果假设,在调用这个函数之前/etc/perceptron_id.txt文件(这个函数参数有整数类型,在这种情况下这个数字的字符串表示意味着)如何从这个函数中实现添加到这个已经创建的文件terms text [] 输入数组的每个元素的每一行(之前打开上述文件以添加行)已经创建? (希望看到一个例子)

【问题讨论】:

    标签: sql linux postgresql solaris postgresql-8.4


    【解决方案1】:

    我不太清楚你所说的输出到屏幕是什么意思。这些函数将值返回给 sql 查询执行器,而不是屏幕。但是,您可以发出通知或返回包装程序随后可以显示在屏幕上的结果。比如:

    RAISE NOTICE 'Config file updated';
    

    现在要执行更新文件之类的操作,您可能需要执行以下操作:

    COPY perceptron(id) TO '/etc/percetron_id.txt' WITH csv;
    

    否则你想使用包装函数。

    请注意,这类事情不是事务性的。您不能回滚对数据库外部文件的写入,因此我建议让另一个程序提取结果并写入文件,而不是直接在后端这样做。 LISTENNOTIFY 非常适合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-18
      • 1970-01-01
      • 2019-06-19
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      相关资源
      最近更新 更多