小编Mil*_*dev的帖子

Postgresql:存储函数中的 dblink

我想将前 20 个行从 db_A 中的表 tbl_A 插入到 db_B 中的 tbl_B。
tbl_A 和 tbl_B 的架构是:

CREATE TABLE <tbl_name> (
 id   serial  PRIMARY KEY,
 int  a,
 int b
);
Run Code Online (Sandbox Code Playgroud)

我有一些与以下查询相关的问题

psql db_A
SELECT dblink_connect("dbname=db_B");
SELECT dblink_open('curse', 'SELECT id, a, b FROM tbl_B');
INSERT INTO tbl_A (SELECT id, a, b FROM dblink_fetch('curse', 20) AS (s_is int, s_a int, s_b int)) RETURNING a;
Run Code Online (Sandbox Code Playgroud)
  • 我可以将以下语句放入存储过程中:
  • 是否可以创建上述三个语句组合的存储过程并创建该过程的准备语句。

如果有人可以评论使用游标或在存储过程中使用 dblink 或任何其他更优雅地实现上述方法的做法有多好,我将不胜感激。

database postgresql dblink prepared-statement stored-functions

2
推荐指数
1
解决办法
4331
查看次数

使用PostgreSQL的ODBC或NpgSQL for ASP.NET

我在ASP.NET中使用postgreSQL数据库进行项目.我不知道哪种连接类型更好.一方面我在ODBC中有Server Explorer(拖放gridview),另一方面它不是逻辑层的独立应用层.请问哪种连接类型更好ODBC或NpgSQL?为什么?

关于我的项目:

  • 应用ASP.NET使用master.page,
  • 数据库PostgreSQL有18个表和4 m:n约束(认为很难),
  • 应用程序必须生成pdf,xml等...

asp.net postgresql odbc npgsql

2
推荐指数
1
解决办法
3138
查看次数

行[:缺少`]请调试帮助

我已将此脚本编写为安装postgres的模块,这是为了向用户显示数据库已创建并获取他/她的输入,因为他们看到数据库已创建.当我运行脚本时,我收到错误

./dbtest: line 39: [: missing `]'
Run Code Online (Sandbox Code Playgroud)

我试过在"是"和"是"周围添加"",我无法弄清楚缺少什么.脚本如下

#   
#
# Check to make sure the database was created and who is the owner
#
#
 if [ -f showdb ];

 then 
      cp showdb /home

 else
      echo " show database file is missing "

fi

if [ -f /home/showdb ];

 then
       su - postgres -c '/home/showdb'

       echo " Do you see the data name created listed above? "
       echo " "
       echo " Type yes or no (type out the …
Run Code Online (Sandbox Code Playgroud)

shell

2
推荐指数
1
解决办法
6609
查看次数

AWS EBS 卷和 PostgreSQL

我有几个问题希望有人能帮忙解答:

  1. 我可以使用 EC2 实例(EBS 支持)来加载和运行 PostgreSQL 数据库吗?
  2. 我可以为 PostgreSQL 上的源数据库创建只读副本吗?
  3. 只读副本是否可以在包含源数据库的同一 EBS 卷上创建,或者我是否需要在单独的 EBS 卷上创建只读副本。

postgresql amazon-web-services

2
推荐指数
1
解决办法
1765
查看次数

如何在日期格式中添加PostgreSQL中的AM或PM?

从双重中选择to_date(to_char(sysdate,'yyyy-mm-dd hh12:mi:ss AM'),'yyyy-MM-dd HH12:MI:SS AM');

这在oracle中运行良好但在Postgres中没有.

sql oracle postgresql

2
推荐指数
1
解决办法
9513
查看次数

Greenplum 中的 DISTRIBUTE BY 通知

假设我在 psql 上运行以下查询:

> select a.c1, b.c2 into temp_table from db.A as a inner join db.B as b 
> on a.x = b.x limit 10;
Run Code Online (Sandbox Code Playgroud)

我收到以下消息:

注意:表没有“DISTRIBUTED BY”子句——使用名为“c1”的列作为该表的Greenplum数据库数据分布键。
提示:“DISTRIBUTED BY”子句确定数据的分布。确保选择的列是最佳数据分布键,以最大限度地减少偏差。

  1. 什么是DISTRIBUTED BY柱?
  2. 存储在哪里temp_table?它存储在我的客户端还是服务器上?

sql greenplum

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

如何在PostgreSQL中以不同的方式使用overlay()?

我有这样的数据库,我想通过检查性别列和覆盖 emp_name 字段来覆盖该字段。

emp_id | emp_name | gender 
-------+----------+--------
   501 | aaa      | M
   502 | bbb      | F
   503 | ccc      | F
   504 | ddd      | M
   505 | eee      | F
Run Code Online (Sandbox Code Playgroud)

我想要这样的输出

emp_id | emp_name | gender 
-------+----------+--------
   501 | Mr.aaa   | M
   502 | Ms.bbb   | F
   503 | Ms.ccc   | F
   504 | Mr.ddd   | M
   505 | Ms.eee   | F
Run Code Online (Sandbox Code Playgroud)

我尝试过这样的选择查询

$select overlay(emp_name placing 'Mr.' from 1 for 0 )  from emp where gender …
Run Code Online (Sandbox Code Playgroud)

sql postgresql

2
推荐指数
1
解决办法
3017
查看次数

使用%ROWTYPE在postgres函数中循环数据时出现问题

我试图在postgres中创建一个函数,从一个表中检索数据并输入到另一个表中.我使用%ROWTYPE类型来存储select语句中的临时数据,然后使用insert语句迭代它但是不成功!以下是我的代码:

CREATE OR REPLACE FUNCTION rm_stock_take_add (icompany character varying, idate character varying) 
  RETURNS character varying AS

$BODY$

DECLARE

    loc_result    CHAR(50);

    -- Declaring a counter to increment for the index
    counter INTEGER;

    -- Declare a variable to hold rows from the stock table.
    row_data rm_stock%ROWTYPE;


BEGIN

     -- Iterate through the results of a query.
    FOR row_data IN 
    SELECT *
    FROM rm_stock 
    --WHERE company = icompany 
    ORDER BY company, rm_sto_code, rm_col_code  

        LOOP

      counter := counter + 1;
/*       
          INSERT INTO rm_stock_take
          ( …
Run Code Online (Sandbox Code Playgroud)

postgresql function rowtype

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

具有数百万行的四个表之间的连接的SQL查询

我们有一个transact sql语句,用于查询4个表,每个表中包含数百万行.

它需要几分钟,即使它已根据TuningAdvisor进行了索引和统计优化.

查询的结构如下:

SELECT E.EmployeeName
    , SUM(M.Amount) AS TotalAmount
    , SUM(B.Amount) AS BudgetAmount
    , SUM(T.Hours) AS TotalHours
    , SUM(TB.Hours) AS BudgetHours
    , SUM(CASE WHEN T.Type = 'Waste' THEN T.Hours ELSE 0 END) AS WastedHours
FROM Employees E
LEFT JOIN MoneyTransactions M
    ON E.EmployeeID = M.EmployeeID
LEFT JOIN BudgetTransactions B
    ON E.EmployeeID = B.EmployeeID
LEFT JOIN TimeTransactions T
    ON E.EmployeeID = T.EmployeeID
LEFT JOIN TimeBudgetTransactions TB
    ON E.EmployeeID = TB.EmployeeID
GROUP BY E.EmployeeName

由于每个事务表包含数百万行的,我认为它分裂成每笔交易表中的一个查询,使用表变量,如@real,@budget@hours,然后在最终的接合这些 …

sql sql-server join large-data-volumes

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

在win7中删除旧的PostgreSQL数据目录

我无法在Windows 7中删除我的旧数据目录.我已经卸载了PostgreSQL,但仍然有系统服务用户帐户"postgres",他是唯一一个拥有该文件夹访问权限的人.

可能的解决方案是开发一个服务,以"postgres"用户身份运行,删除文件夹,但必须有一个更简单的方法吗?

windows postgresql acl

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