存储过程从视图中导入数据
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 导出导入某用户所有数据(包括表视图存储过程...)