存储过程从视图中导入数据

Posted

技术标签:

【中文标题】存储过程从视图中导入数据【英文标题】:Stored procedure import data from view 【发布时间】:2012-03-23 10:42:43 【问题描述】:

我想做一个同步工作——从一个视图到不同的表。 我有一个数据库视图(来自链接服务器),我想创建一个存储过程,将数据库视图拆分为 2 个表。 db 视图如下所示:

person_id person_type(=>“员工”或“客户”) 姓氏 名字 电子邮件

表格是“员工”和“客户”。它们都至少具有“姓氏”、“名字”和“电子邮件”属性。 如果数据行已经存在于表中,则将进行更新,否则将进行插入。属性“person_type”是决定我必须使用的女巫表。

我使用的是 ms sql server 2008 r2。

谁能帮我创建存储过程?或者给个提示?

提前致谢

【问题讨论】:

到目前为止你有什么收获? 【参考方案1】:

创建 2 个合并语句,一个执行每个任务。

一个 MERGE 语句将插入/更新/删除到 Employee 表中,另一个将对 Customer 表执行相同的操作。

例子:

MERGE YourCustomerTable TargetTable
USING (SELECT * FROM YourView WHERE Column = 'Customer') SourceTable ON TargetTable.CustomerID = SourceTable.CustomerID
WHEN MATCHED THEN UPDATE...........
WHEN NOT MATCHED THEN INSERT (ColumnA, ColumnB) Values (SourceTable.ColumnA, SourceTable.ColumnB)

【讨论】:

【参考方案2】:

根据您的描述,我了解到您需要从数据库视图为客户和员工创建两个表。

为了让这个更快;创建一个 ssis 包并使用“条件拆分”选项根据 person_type 列拆分表。并将其插入到对应的表中。

您可以保存此包并在需要时运行它,或者您可以将其作为工作来运行

【讨论】:

以上是关于存储过程从视图中导入数据的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 导出导入某用户所有数据(包括表视图存储过程...)

从 SQL 导入后 Excel 无法识别数字单元格

怎么把本地的存储过程导入oracle到数据库

使用命令将存储过程查询从 sql 文件导入 Oracle DB

MySQL 导入数据。我可以导入存储过程吗?

SSMS数据的导入和导出不能保持视图结构。