• PostgreSQL利用"do ..." 命令的测试数据做成/恢复脚本


    平时在测试某个模块的几个画面时,要是没有把一整套测试数据整理好,

    就容易反复出现在测试数据恢复上花很多时间的情况。

    为此,这里总结了一下,利用"do ..." 命令执行数据回滚的代码段,简单易用。

    以下SQL文,可以放在一个Main.sql中,主要是用来对比测试前后数据的变化。

    --首先查询测试前各业务表的数据,以备比较
    SELECT * FROM src_table WHERE 1 = 1 AND p_key_1 = 'hahaha' AND p_key_2 >= 1 AND p_key_2 <= 99 ;
    
    --根据原表的数据,做成存放测试数据的临时表
    --此处可根据业务需要批量做成多张表
    CREATE TABLE test_data_table AS SELECT * FROM src_table WHERE 1 = 1 AND p_key_1 = 'hahaha' AND p_key_2 >= 1 AND p_key_2 <= 99 ;
    
    --然后在实际业务程序、画面上进行测试
    
    --最后查询测试后结业务表的数据,看看结果是否符合预期
    SELECT * FROM src_table WHERE 1 = 1 AND p_key_1 = 'hahaha' AND p_key_2 >= 1 AND p_key_2 <= 99 ;

    如果,数据不符合预期,那就利用以下SQL文进行测试数据恢复或者测试数据重制

    以下可以放在RollBack.sql中,可根据业务需要批量做成多张表。

    DO $$
    DECLARE
    
    --true:测试数据恢复; false:测试数据重制
    test_to_src boolean := true;
    
    --此处可根据需要定义多批测试数据主KEY
    
    --case1
    data_p_key_1 varchar := 'hahaha';
    
    data_p_key_2_fr int := 0;
    data_p_key_2_to int := 99;
    
    --case2
    -- data_p_key_1 varchar := 'heiheihei';
    --
    -- data_p_key_2_fr int := 100;
    -- data_p_key_2_to int := 199;
    
    BEGIN
    
    IF test_to_src THEN
    --delete src_table
    DELETE FROM src_table WHERE 1 = 1 AND p_key_1 = data_p_key_1 AND p_key_2 >= data_p_key_2_fr AND p_key_2 <= data_p_key_2_to ;
    
    --insert into src_table
    INSERT INTO src_table SELECT * FROM test_data_table WHERE 1 = 1 AND p_key_1 = data_p_key_1 AND p_key_2 >= data_p_key_2_fr AND p_key_2 <= data_p_key_2_to ;
    ELSE
    --delete test_data_table
    DELETE FROM test_data_table WHERE 1 = 1 AND p_key_1 = data_p_key_1 AND p_key_2 >= data_p_key_2_fr AND p_key_2 <= data_p_key_2_to;
    
    --insert into test_data_table
    INSERT INTO test_data_table SELECT * FROM src_table WHERE 1 = 1 AND p_key_1 = data_p_key_1 AND p_key_2 >= data_p_key_2_fr AND p_key_2 <= data_p_key_2_to;
    
    END IF;
    
    END ;
    $$ LANGUAGE plpgsql;
  • 相关阅读:
    文件处理(记录经典代码及相关逻辑)
    python与pip在widow下cmd命令行操作问题收集:python、pip不是内部或外部命令,也不是可运行程序
    python—函数中存在的部分问题
    python —匿名函数(lambda)
    Python—递归函数
    python-函数参数
    python代码运行过程
    String类练习
    String类的常用方法
    死锁与进程通信
  • 原文地址:https://www.cnblogs.com/soulxj/p/13812824.html
Copyright © 2020-2023  润新知