`
datamachine
  • 浏览: 163567 次
社区版块
存档分类
最新评论

简化SQL计算之实现跨库动态MERGE运算

    博客分类:
  • DB
阅读更多

        MSSQLORACLE等数据库都有MERGE语句,用于更新表很方便。但源表和目标表来自不同数据库时,就很难直接使用MERGE语句了。这时候,可以用集算器来协助处理。

         参数sourcetarget代表两个结构相同但数据不同的表,分别属于两个不同的数据库,要求以主键为标准用source更新target,比如table1table2的主键都是AB,数据如下:


 

         table2更新table1之后,table1应当如下:



 

        集算器代码:



 

        A1,A2:从系统表中读出表source的主键存入变量pks,计算结果为”A,B”。各种数据库获得主键的方法不同,这里以MSSQL为例。myDB2/myDB1分别指向source/target所在数据库。

        A3,A4:以游标的方式读取sourcetarget,后续的归并运算要求归并项(即主键)有序,故要排序。

        A5:将targetsource进行左链接。@x表示操作游标,@1表示左连接。${columns}是宏,可将字符串转化为表达式。

        A6:从游标A5中循环取数,每次一千条。在循环体B6-B9中可以用A6来引用循环变量。下图是A6的结构:



 

        B6,B7:取出需要insert的记录,并更新target。选项@i表示只生成insert语句,不进行全表扫描。

        B8,B9:取出需要update的记录,并更新target。选项@u表示只生成update语句。函数array可以获得字段名列表。

 

         循环结束后可以看到target(table1)已被更新:



 

         这个方法也可以应用于那些不支持MERGE语句的数据库,如MySQL

 

 

  • 大小: 23.4 KB
  • 大小: 13.2 KB
  • 大小: 76.1 KB
  • 大小: 24.9 KB
  • 大小: 17 KB
0
0
分享到:
评论

相关推荐

    权威SQL 标准规范文档

    同时,SQL 2008引入了MERGE语句,它结合了INSERT、UPDATE和DELETE的功能,用于根据源数据与目标数据的比较结果进行操作。 3. **查询语言**:SQL的核心功能是查询数据,这通过SELECT语句实现。在SQL 2008中,你可以...

    sql server 性能优化(生产中常用)

    执行存储过程时,避免使用动态SQL,因为动态SQL编译和查询计划分析的过程较为耗时。 5. 多表关联可采用临时表 在多表关联查询中,如果查询结果需要作为其他数据的输入,可以使用临时表来存储中间结果。通过手动调整...

    SQL Server2008中的T—SQL功能改进.pdf

    SQL Server 2008对T-SQL(Transact-SQL)进行了多项功能改进,提升了数据库管理和数据处理的效率。T-SQL是SQL Server中用于交互式查询和编写存储过程的语言,这些改进使得DBA(数据库管理员)和开发人员的工作更为...

    SQL Server2008中的T-SQL功能改进.pdf

    在SQL Server 2008之前的版本中,可能需要自定义一些方法或使用外部工具来实现这一目的。然而,SQL Server 2008通过T-SQL内置的功能简化了这一过程。通过设置MaskInput属性为True,可以在数据输入时隐藏或掩盖输入的...

    SQL SERVER 2008 新特性 英文版

    在探讨SQL Server 2008的新特性时,我们聚焦于其对Transact-SQL编程能力的增强,以及对SQL/Common Language Runtime (CLR)的改进。这些新特性旨在提升性能、增加功能,并加强全球化支持,满足了在线事务处理(OLTP)...

    python标准库_常见数据分析库的API源码.zip

    这些库极大地简化了数据处理、数值计算以及数据可视化的工作。 首先,pandas是Python中最流行的数据分析库,它提供了高性能、易用的数据结构,如DataFrame和Series。DataFrame可以理解为表格型数据结构,类似于SQL...

    python科学计算第二版张若愚著随书代码

    此外,Pandas的merge函数能实现SQL中的JOIN操作,对于处理多个数据源非常有用。而Pandas的datetime处理功能则使得处理时间序列数据变得轻松。 同时,Matplotlib的使用也十分重要。掌握如何创建基本图表,如何自定义...

    基于Python的数据批处理技术探讨及实现.zip

    DataFrame可以轻松地从多种数据源(如CSV、Excel、SQL数据库等)加载数据,并提供了大量的内置函数和方法,如groupby、merge、pivot_table等,用于执行复杂的数据操作。 其次,NumPy是Python科学计算的基础包,提供...

    Python库 | pandas-1.3.5-cp39-cp39-win32.whl

    - **数值运算**:支持基本的数学运算以及统计计算,如均值、中位数、标准差等。 - **时间序列分析**:处理日期和时间数据,包括日期范围生成、时间差计算等。 5. **数据导入和导出**: - 支持多种文件格式,如...

    Python库 | pandas-0.5.0.win32-py3.2.exe

    总之,`pandas`库是Python数据分析领域的重要组成部分,它简化了数据处理的许多方面,使得数据科学家和工程师能更高效地进行数据探索、清洗、预处理和分析工作。`pandas-0.5.0.win32-py3.2.exe`这个文件为Python 3.2...

    Pandas介绍123.zip

    Pandas通过优化的C和Cython代码实现了高效的计算性能,并支持大内存数据处理,利用Dask等库可进一步扩展到分布式计算。 总的来说,Pandas以其易用性和强大功能,成为了数据科学领域的首选工具。无论是初学者还是...

    数据库原理及应用课件:第7章 高级查询.ppt

    CASE函数是一种在SQL中实现条件判断的多分支函数,可以在查询表达式中使用。根据输入表达式的值,CASE函数可以返回多个可能的结果之一。简单CASE函数适用于与单一值进行等值比较,而搜索CASE函数则支持与范围值进行...

    pandas-0.16.1.tar.gz

    - **快速计算**:Pandas利用NumPy库底层的向量化运算,实现了高效的数据处理速度。 - **数据切片与选取**:通过索引、条件语句或者布尔数组可以方便地选取数据子集。 - **数据聚合与统计**:内置的统计方法(mean...

    pandas-0.23.0.tar.gz

    6. **性能优化**:Pandas利用NumPy库,通过优化底层的C和Fortran代码,实现了高效的计算速度,同时,其内存管理机制使得处理大型数据集成为可能。 在“pandas-0.23.0”这个版本中,可能包含了以下改进和新特性: -...

    php.ctl-Editplus的PHP函数自动完成素材库

    6. `php4math.ctl`:数学运算相关的函数,如`pow`、`sin`、`abs`等,支持各种数值计算。 7. `php4vars.ctl`:与变量相关的函数,如`extract`、`compact`等,帮助管理程序中的变量。 8. `php4http.ctl`:处理HTTP...

    自动办公- pandas-matplotlib

    DataFrame类似于电子表格或SQL数据库中的表,可以存储不同类型的数据,并支持各种数学运算和统计方法。 1. **数据导入与导出**:Pandas支持多种数据格式的读写,如CSV、Excel、SQL数据库等,方便数据的导入与导出。...

Global site tag (gtag.js) - Google Analytics