标签: perl

如何为嵌入式 MySQL 数据库创建和初始化架构?

我想创建一个嵌入式 MySQL 数据库来运行测试,但我不知道该怎么做。

  • 如何初始化数据库?
  • 如何运行我的创建表语句?

我正在使用 Perl,所以它需要用一种语言而不是几个命令来完成。

mysql embedded perl

6
推荐指数
1
解决办法
737
查看次数

PostgreSQL pl/perl 触发器,区分 null 和空

我一直在尝试加快我在 pl/pgsql 中编写的通用审计触发器的速度。更新时,它会生成正在更新的表中的列列表,并在审计表中插入记录任何更改的行(按表、列、之前的数据、之后的数据等)。跨多个表使用相同的触发器函数。

我正在尝试使用 pl/perl,因为它对于手头的任务似乎要快得多,但我似乎遇到了区分数据库中 NULL 和空字符串 ('') 值的问题。

在我看来,如果一列从 NULL 变为空字符串(反之亦然),这是我需要记录的更改。但是,使用可用的新/旧列引用 ($_TD->{new/old}{$columnName}),我似乎无法区分实际为空的列和包含空字符串的列。我知道为空的列正在被空和 undef 检查捕获,我知道的列也是空的。

    if($_TD->{new}{$column} eq '') {
        elog(NOTICE, "New value in column $column is empty");
    }
    if($_TD->{old}{$column} eq '') {
        elog(NOTICE, "Old value in column $column is empty");
    }
    if($_TD->{new}{$column} eq undef) {
        elog(NOTICE, "New value in column $column is not defined");
    }
    if($_TD->{old}{$column} eq undef) {
        elog(NOTICE, "Old value in column $column is not defined");
    }
Run Code Online (Sandbox Code Playgroud)

我怀疑我在这里做了一些愚蠢的事情,但也许我正在尝试做一些我根本无法做的事情。有什么建议吗?

编辑 - 使用 Postgres 8.4.4 的价值

编辑 - 在查看下面 filiprem …

postgresql trigger null perl

5
推荐指数
1
解决办法
1182
查看次数

如何创建字母数字序列,例如 AAAA0000 等

我想创建一个像这样的字母数字序列:

AAAA0000
AAAA0001
AAAA0002
AAAA0003
.
.
.
AAAA9999
AAAB0000
AAAB0001
.
.
.
ZZZZ9999
Run Code Online (Sandbox Code Playgroud)

我创建了这个存储过程来做到这一点,但它太慢了:

CREATE OR REPLACE FUNCTION public.fn_batch_seq()
  RETURNS text
  LANGUAGE plpgsql
AS
$body$
DECLARE
  v_sequence TEXT := '';
  v_next_sequence TEXT := '';
  v_existing_id BIGINT := 0;
BEGIN

  /*
  *  VARCHAR BATCH SEQUENCE FOR SIMCARDS
  */
  SELECT "sequence" FROM batch_sequence WHERE id = 1 INTO v_sequence;
  IF v_sequence = '' THEN
    RAISE NOTICE 'Error - No existe ningun registro en batch_sequence almacenado';
    RETURN -500;
  END IF;
  SELECT …
Run Code Online (Sandbox Code Playgroud)

postgresql perl postgresql-9.4

5
推荐指数
1
解决办法
8817
查看次数

杀死无限循环plperl

如何使用无限循环的 plperl 函数终止会话?

双方pg_terminate_backendpg_cancel_backend没有任何影响。kill -1 pid什么也没做,kill -9 pid服务器崩溃了。

postgresql perl hang kill

5
推荐指数
1
解决办法
244
查看次数

临时表数据创建后去了哪里?

据我所知,temp_buffers设置用于存储临时表数据的服务。

PGDATA但是,当我创建了一个临时表时,会立即在主数据库中为其创建文件。因此,我希望能就几个问题得到帮助。

  1. a.会发生什么
    ?临时表数据是否temp_buffers 足以存储临时表数据?

    b. 临时表数据是否temp_buffers 不足以存储临时表数据?

  2. 是否存在temp_buffers 设置不足而导致溢出的情况pgsql_tmp

postgresql perl postgresql-extensions

4
推荐指数
1
解决办法
1612
查看次数

Perl DBI 每次连接到 Oracle 数据库需要 60 秒

我觉得我的 SQL 连接一定有问题。我通常忽略了它,但我最终会尝试深入了解它。

my $dsn = "DBI:Oracle:host=$host;sid=$sid";

my $dbh = DBI->connect($dsn,$dbuser,$dbpass,{ RaiseError => 1,AutoCommit => 0 }) or die("Unable to connect: $DBI::errstr");
Run Code Online (Sandbox Code Playgroud)

每次跑步都需要 60 秒DBI->connect。相当大的查询可能需要一些时间,网络延迟可能会导致一些延迟,但所有这些都超出了连接所需的 60 秒。我可以DBI->connect在不实际运行查询的情况下直接运行然后立即关闭它,这将需要 60 秒。我可以使用不同的工具毫无问题地查询这个数据库,但是任何时候我DBI->connect对它运行一个,都需要 60 秒。我的大多数查询返回的时间为 61.2 秒、63.4 秒或 65.3 秒。不管怎样,从脚本点击 DBI->connect 到它点击下一行的时间是 60 秒。我什至在之前和之后的行上给它加上了时间戳。时间戳之间的唯一内容是DBI->connect.

我究竟做错了什么?

oracle perl

3
推荐指数
1
解决办法
1933
查看次数