我想找到累积或运行的字段数量,并将其从分段插入表格.我的暂存结构是这样的:
ea_month id amount ea_year circle_id
April 92570 1000 2014 1
April 92571 3000 2014 2
April 92572 2000 2014 3
March 92573 3000 2014 1
March 92574 2500 2014 2
March 92575 3750 2014 3
February 92576 2000 2014 1
February 92577 2500 2014 2
February 92578 1450 2014 3
Run Code Online (Sandbox Code Playgroud)
我希望我的目标表看起来像这样:
ea_month id amount ea_year circle_id cum_amt
February 92576 1000 2014 1 1000
March 92573 3000 2014 1 4000
April 92570 2000 2014 1 6000
February 92577 3000 2014 …Run Code Online (Sandbox Code Playgroud) sql postgresql analytic-functions cumulative-sum window-functions
我有Postgresql函数,它必须将大约150万个数据插入表中.我想要的是我希望看到每个记录插入填充表格.目前当我尝试使用大约1000条记录时会发生什么,只有在完成函数执行后才会填充get.如果我在中途停止功能,则不会填充任何数据.即使在插入了一定数量的记录后停止,我怎样才能提交记录?
我正在执行PostgreSQL函数来更新具有大量数据的表,并且每天更新大约100000条记录.在更新期间,我收到一条错误消息:
"could not write to hash-join temporary file: No space left on device"
Run Code Online (Sandbox Code Playgroud)
我真的没能得到一些有用的东西来克服这个错误.我得到了一些东西,它说要设置临时表空间.但我无法找到如何创建临时表空间,在执行更新过程期间将存储数据.
对此的快速帮助将不胜感激.提前致谢.
我用以下格式编写了一个存储过程:
ALTER PROCEDURE usp_data_migration
(@sourceDatabase varchar(50),
@sourceTable varchar(50),
@targetDatabase varchar(50),
@targetTable varchar(50),
@finaloutput varchar(max) output)
AS
BEGIN
----Set of SQL Blocks
END
Run Code Online (Sandbox Code Playgroud)
然后,我正在执行程序:
DECLARE @finaloutput1 varchar(300)
EXEC usp_data_migration 'Yousuf', 'emp', '[City Branch]', 'emp_tgt', @finaloutput1 output
SELECT @finaloutput1
Run Code Online (Sandbox Code Playgroud)
通过这种方式执行我没有正确的输出.
当我执行这种方式时:
DECLARE @finaloutput1 varchar(300)
EXEC usp_data_migration @sourceDatabase = 'Yousuf',
@sourceTable = 'emp',
@targetDatabase = '[City Branch]',
@targetTable = 'emp_tgt',
@finaloutput1 output
SELECT @finaloutput1
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息:
消息119,级别15,状态1,行41
必须将参数编号5和后续参数作为"@name = value"传递.在使用"@name = value"形式之后,必须以"@name = value"形式传递所有后续参数.
如果我删除了输出参数并执行了该过程,我得到了我想要的输出但是我无法将结果作为输出.
EXEC usp_data_migration @sourceDatabase = 'Yousuf',
@sourceTable = 'emp',
@targetDatabase …Run Code Online (Sandbox Code Playgroud) 我已经编写了一个自动化功能,如下所述,它根据一些规则调用其他一些功能.该函数给出了我想要的结果,但我面临的问题是它在内部处理每个函数后都没有提交数据.一旦主要功能完成,它就会提交整个数据.我想做一个内部事务,它应该在内部函数执行完成时提交数据.我尝试在每个PERFORM语句之后给出一个COMMIT语句,但是我收到一个错误,说"无法在PL/pgSQL中开始/结束事务".
任何人都可以建议我如何在函数内部进行事务处理.
CREATE OR REPLACE FUNCTION ccdb.fn_automation_for_updation()
RETURNS void AS
$BODY$
DECLARE
sec_col refcursor;
cnt integer;
sec_code ccdb.update_qtable%ROWTYPE;
new_cnt integer;
BEGIN
SELECT COUNT(*)
INTO cnt
FROM ccdb.update_qtable
WHERE status_flag IN (-1,1);
OPEN sec_col FOR
SELECT * FROM ccdb.update_qtable WHERE status_flag IN (-1,1);
FOR i IN 1..cnt
LOOP
FETCH sec_col INTO sec_code;
PERFORM ccdb.o_dtr_update(sec_code.section_code);
PERFORM ccdb.o_consumer_update_for_update(sec_code.section_code);
PERFORM ccdb.o_consumer_update_for_insert(sec_code.section_code);
PERFORM ccdb.o_bills_update_for_update(sec_code.section_code);
PERFORM ccdb.o_bills_update_for_insert(sec_code.section_code);
PERFORM ccdb.o_payments_update_for_update_new(sec_code.section_code);
PERFORM ccdb.o_payments_update_for_insert(sec_code.section_code);
PERFORM ccdb.o_payments_map_update_for_update(sec_code.section_code);
PERFORM ccdb.o_payments_map_update_for_insert(sec_code.section_code);
SELECT COUNT(*) INTO new_cnt FROM ccdb.update_qtable WHERE status_flag IN (-1,1);
IF …Run Code Online (Sandbox Code Playgroud) 我有一个这样的SQL语句:
(ROW_NUMBER() OVER (PARTITION BY a.[market], [MEASURE_TYPE]
ORDER BY AM, REP, ORDER_KEY)) AS ORDER_KEY
Run Code Online (Sandbox Code Playgroud)
我想写一个DAX来实现上面的SQL语句。
我有一个表有一个字段Month_Name,它包含月份的名称.我想按月名称排序,而不是按字母顺序排序,而是按照其实际顺序排序,例如1月,2月等.如何使用PostgreSQL实现此功能?
有什么方法可以将Month Name转换为其数值吗?
id billed_unit billed_amount town_id ea_month ea_year
3959920 3695.17 25856.84 CHRY April 2014
3959920 3695.17 25856.84 CHRY August 2014
3959920 3695.17 25856.84 CHRY February 2014
3959920 3695.17 25856.84 CHRY July 2014
3959920 3695.17 25856.84 CHRY June 2014
3959920 3695.17 25856.84 CHRY March 2014
Run Code Online (Sandbox Code Playgroud) 我有两个嵌套游标的功能.外部光标从源获取客户的付款详细信息,并根据某些业务逻辑插入到目标中.内部光标接受每笔付款的付款细节,它一个接一个地发生.
付款表有大约125000行,大约335000行用于付款详细信息.所有这些行都将迁移到目标表.执行该功能需要两个多小时,数据库CPU使用率高达99%.
我正在使用PostgreSQL 9.2.
如何提高功能的性能?
我正在使用的代码:
CREATE OR REPLACE FUNCTION ccdb_dummy.o_payments1(a integer)
RETURNS void AS
$BODY$
DECLARE
cursor_1 refcursor;
cursor_2 refcursor;
rowcount integer;
rowcount1 integer;
payment_no bigint;
query_1 character varying(250);
lc_cin_num bigint;
test character varying(50);
t_payments ccdb_stg.o_payments_stg%ROWTYPE;
t_payments_details ccdb_stg.o_payment_head_dtls_stg%ROWTYPE;
BEGIN
rowcount := 0;
open cursor_1 for select * from ccdb_stg.o_payments_stg WHERE section_code = a;
select count(1) into rowcount from ccdb_stg.o_payments_stg WHERE section_code = a;
for i IN 1..rowcount loop
fetch cursor_1 into t_payments;
payment_no= nextval('ccdb_stg.payments_seq');
select cin into lc_cin_num from …Run Code Online (Sandbox Code Playgroud) 我有一个拥有1000多个功能的数据库.我想授予某些用户执行权限.我无法手动完成,因此我想获得一个函数列表并编写代码以生成所有函数的GRANT EXECUTE脚本.我尝试了以下脚本,但这不是给我参数.我无法通过此查询获取参数.
SELECT 'GRANT EXECUTE ON FUNCTION '||nspname||'.'||proname||' TO gis;'
FROM pg_catalog.pg_namespace n
JOIN pg_catalog.pg_proc p
ON pronamespace = n.oid
WHERE nspname = 'ccdb'
Run Code Online (Sandbox Code Playgroud)
如何使用数据类型获得所需的结果?
喜欢,
GRANT EXECUTE ON FUNCTION <schema_name>.<table_name>(<list of arguments>) TO <user_name>;
Run Code Online (Sandbox Code Playgroud) 我有一个查询如下,根据要求执行.
DECLARE @count varchar(20)
SET @count = (SELECT COUNT(*) FROM emp)
PRINT 'Employee Count: '+@count
SELECT @count
Run Code Online (Sandbox Code Playgroud)
但是,如果我想要使用动态SQL,我没有得到我想要的结果.我的动态SQL代码如下:
DECLARE @count varchar(10)
DECLARE @sqlQuery varchar(500)
SET @sqlQuery = 'SET '+@count +'= (SELECT COUNT(*) FROM emp)'
EXEC (@sqlQuery)
PRINT 'Employee Count: '+@count
SELECT @count
Run Code Online (Sandbox Code Playgroud)
这段代码给了我一个NULL作为输出.
应该做什么?可以帮我说一下我哪里出错了?
我需要找到特定日期的上一季度的价值.例如,我在2015年1月12日通过了一个日期,我需要将结果作为2014年第四季度.
如果我使用下面的查询,我得到的结果为0
SELECT EXTRACT(quarter FROM '2015-01-01'::timestamp) - 1;
Result : 0
Run Code Online (Sandbox Code Playgroud)
有人能告诉我如何获得如上所述的理想结果吗?
postgresql ×8
function ×3
plpgsql ×3
sql ×3
sql-server ×2
t-sql ×2
commit ×1
cursor ×1
date ×1
datetime ×1
dax ×1
dynamic-sql ×1
output ×1
performance ×1
permissions ×1
powerbi ×1
row-number ×1
space ×1
sql-order-by ×1
tablespace ×1
transactions ×1