sql2012 ssis有啥用途

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql2012 ssis有啥用途相关的知识,希望对你有一定的参考价值。

参考技术A 微软BI产品 下的一个数据清洗工具。
主要用来开发etl数据清洗工作。

就其用途而言,准备好的语句和 SQL 或 PL/pgSQL 函数有啥区别?

【中文标题】就其用途而言,准备好的语句和 SQL 或 PL/pgSQL 函数有啥区别?【英文标题】:What is the difference between prepared statements and SQL or PL/pgSQL functions, in terms of their purpose?就其用途而言,准备好的语句和 SQL 或 PL/pgSQL 函数有什么区别? 【发布时间】:2018-12-05 18:22:01 【问题描述】:

在 PostgreSQL 中,prepared statement 与 SQL 或 PL/pgSQL 函数在用途、优缺点方面有何区别?我们什么时候用哪个?

在这个非常简单的示例中,它们的工作方式是否相同,对吗?

CREATE TABLE foo (id INT, name VARCHAR(80)); 

CREATE FUNCTION myfunc1(INT, VARCHAR(80)) RETURNS void AS ' 
INSERT INTO foo VALUES ($1, $2);
' LANGUAGE SQL; 

SELECT myfunc1(3, 'ben');

CREATE FUNCTION myfunc2(INT, VARCHAR(80)) RETURNS void AS ' 
BEGIN
INSERT INTO foo VALUES ($1, $2);
END' LANGUAGE plpgsql; 

SELECT myfunc2(3, 'ben');

PREPARE fooplan (INT, VARCHAR(80)) AS
    INSERT INTO foo VALUES($1, $2);
PREPARE

EXECUTE fooplan(3, 'ben');

【问题讨论】:

【参考方案1】:

所有三个“工作相同”,因为它们执行简单的 SQL 语句:

INSERT INTO foo VALUES (3, 'ben');

准备好的语句只适用于单个准备好的 SQL 语句(顾名思义)。而且只有 DML 命令。 The manual:

任何SELECTINSERTUPDATEDELETEVALUES 声明。

函数可以包含任意数量的语句。 DML DDL。只有 SQL 用于 SQL 函数。加上 PL/pgSQL 中的一些非 SQL 过程元素。

准备好的语句只在同一个会话中可见并在会话结束时消失,而函数仍然存在并且对所有人可见 - 仍然只对具有EXECUTE 权限的人可用。

预准备语句的开销最小。 (差别不大。)

SQL 函数是三个不能保存查询计划(单独)的唯一一个。 Read details about plan caching in PL/pgSQL functions in the manual here.

SQL 函数也是唯一一个在更大的查询中使用时可以为inlined 的函数。 (不过,INSERT 不是。)

一个相当全面的 SQL 和 PL/pgSQL 函数之间的区别列表:

Difference between language sql and language plpgsql in PostgreSQL functions

从 Postgres 11 开始还有 SQL 过程:

When to use stored procedure / user-defined function?

【讨论】:

谢谢。 “SQL 函数不能(单独)保存查询计划”是什么意思? @Ben:Prepared statements 保存查询计划以在同一会话中重复执行。 PL/pgSQL 函数将语句有效地视为准备好的语句。 SQL 函数没有。但是,在保存了计划的查询中使用 SQL 函数时,仍可能间接保存查询计划。 谢谢。 PostgreSQL文档说“PREPARE语句执行时,指定语句被解析分析重写 . 当随后发出EXECUTE命令时,准备好的语句被计划执行。这种分工避免了重复的解析分析工作,同时允许执行计划取决于提供的特定参数值。”类似地,定义一个 SQL 函数并使用一些参数调用 SQL 函数是什么感觉? 另外,更大查询中的“内联”对于 SQL 函数意味着什么? 我在上面提供的链接答案中的更多详细信息:***.com/questions/24755468/…

以上是关于sql2012 ssis有啥用途的主要内容,如果未能解决你的问题,请参考以下文章

SSIS 将所有 Paradox 表导入 SQL Server 2012

在 SQL Server 表中转储 SSIS USER 变量名称和值

SQL - 使用 SSIS 的增量插入?

试图通过SSIS教程。为SQL Server 2012创建一个简单的ETL包。

在SQL Server 2012中实现CDC for Oracle

Access 2003:从 SQL Server 2005 切换到 SQL Server 2012 有啥并发症吗?