【问题标题】:piping insert commands into psql tool管道将命令插入 psql 工具
【发布时间】:2013-04-14 02:46:18
【问题描述】:

我需要创建一个 perl 脚本,它接受 2 个参数(int runid 和 int iters),然后通过在 iters 时间内重复插入一个具有关联 runid 的随机数来填充 postgresql 数据库中的一个表。我有这个简单的脚本可以与 DBI 一起使用,DBI 是 perl 最常用的数据库接口,但是,我认为这应该可以通过管道插入命令到 postgresql 的 psql 工具中来实现。但是,我对如何开始感到困惑。任何帮助将不胜感激。

【问题讨论】:

  • DBI 很好。你为什么要切换到管道你的命令?没有任何东西可以通过这种方式获得。 (如果你真的:你可以打开一个文件句柄到一个像open my $pipe, '|-', "psql", @options or die这样的命令)
  • 您可以在 postgresql 函数中执行插入操作,您只需在 perl 中执行 select my_function(1, 100)。如果那是你想要重写的问题
  • 对不起,但我正在尝试遵循 amon 的建议,我对实际调用 INSERT INTO 命令的方式感到困惑,这会在 $pipe 中吗?

标签: database perl postgresql psql


【解决方案1】:

您也可以只使用一个简单的 SQL 命令和generate_series()

INSERT INTO tbl (runid, rnd_col)
SELECT <runid>, (random()*1000)::int
FROM   generate_series(1, <iters>)

这会插入 iters 行,其中包含 0 到 1000 之间的随机 integer 数字。适应您的需求。比您可能想出的任何脚本都要快。

来自 psql:

psql $connection_parameters -c $SQL_from_above

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 2023-03-23
    相关资源
    最近更新 更多