我想将前 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
我在ASP.NET中使用postgreSQL数据库进行项目.我不知道哪种连接类型更好.一方面我在ODBC中有Server Explorer(拖放gridview),另一方面它不是逻辑层的独立应用层.请问哪种连接类型更好ODBC或NpgSQL?为什么?
关于我的项目:
我已将此脚本编写为安装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) 我有几个问题希望有人能帮忙解答:
从双重中选择to_date(to_char(sysdate,'yyyy-mm-dd hh12:mi:ss AM'),'yyyy-MM-dd HH12:MI:SS AM');
这在oracle中运行良好但在Postgres中没有.
假设我在 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”子句确定数据的分布。确保选择的列是最佳数据分布键,以最大限度地减少偏差。
DISTRIBUTED BY柱?temp_table?它存储在我的客户端还是服务器上?我有这样的数据库,我想通过检查性别列和覆盖 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) 我试图在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) 我们有一个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,然后在最终的接合这些 …
我无法在Windows 7中删除我的旧数据目录.我已经卸载了PostgreSQL,但仍然有系统服务用户帐户"postgres",他是唯一一个拥有该文件夹访问权限的人.
可能的解决方案是开发一个服务,以"postgres"用户身份运行,删除文件夹,但必须有一个更简单的方法吗?