数据库oracle有没有类似sql server management studio这种可视化操作界面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库oracle有没有类似sql server management studio这种可视化操作界面相关的知识,希望对你有一定的参考价值。

没有的话只能写语句建表了?

oracle有自带的sql develop
但是一般都用第三方的pl/sql dev 或者 Toad
参考技术A 常用的PLSQL Developer

在 SQL Server 中将值分配给类似列后,使用 SSIS 将 Oracle 表列更新为 Null

【中文标题】在 SQL Server 中将值分配给类似列后,使用 SSIS 将 Oracle 表列更新为 Null【英文标题】:USE SSIS to update Oracle table column with Null after the value has been assigned in SQL Server to a similar column 【发布时间】:2021-12-28 18:56:45 【问题描述】:

我在 Oracle 中有一个包含以下列的数据表:

Record_ID, Run_ID, PO_Type, PO_NUM, DateTime

创建 PO 时,会填充除 Run_ID 之外的所有列:

Record_ID, Run_ID, PO_Type, PO_Num, DateTime
---------------------------------------------------
1374,            , NEW_PO , 12345 , 20211117123456
1375,            , NEW_PO , 12346 , 20211117123545

这些记录目前通过 SSIS 从我们的系统中导出,然后再导入 SQL Server 数据库。在这里他们将被分配一个RUN_ID,这对于所有导出的数据运行都是唯一的(一次导出的所有数据都将具有相同的Run_ID):

RECORDID, SYSTEM, RUN_ID, PO_TYPE, PO_NUM, DATETIME
---------------------------------------------------------
1374,     ORDER , 5078  , NEW_PO , 12345 , 20211117123456
1375,     ORDER , 5078  , NEW_PO , 12346 , 20211117123545

然后我需要将此Run_ID 写回Oracle 数据库,并将PO_TYPENEW_PO 更新为Processed_PO,这样我的Oracle 数据库将如下所示:

Record_ID, Run_ID, PO_Type      , PO_Num, DateTime
--------------------------------------------------------
1374,     5078   , Processed_PO , 12345 , 20211117123456
1375,     5078   , Processed_PO , 12346 , 20211117123545

我遇到的问题是,这一切都需要在同一个 SSIS pull 中发生,因为它是我唯一可用的工具,我不知道如何开始解决这个问题,所以任何关于这将不胜感激。

【问题讨论】:

正确的解决方案可能完全取决于如何生成 RUN_ID 并将其分配给 MSSQL 端的行。您可能还需要考虑时间问题,因此您在 Oracle 端如何选择要导出的行也很重要。 我有不同的数据流任务,即 1) 从 Oracle DB 中提取数据 2) 将不同的 Run_ID 分配给 MS_SQL 数据,我希望第三个数据流任务对 Oracle 进行更新,所以到目前为止还没有生成 Run_ID 的机会。 RUN_ID 是从 SQL 表生成的。在数据流任务 2 中,SQL 是 Update SQL_PO Set Run_ID = RUN_ID_TRACKER.RUN_ID 然后另一个 SQL 任务执行 Update RUN_ID_TRACKER SET RUN_ID = RUN_ID + 1 您不能简单地添加一个任务,使用您想要的 RUN_ID 在 Oracle 表上运行更新语句吗?将 run_id 存储在包内的用户变量中,并将其用于 Oracle 更新。 @MplsDBA,我正在尝试按照这些方式做一些事情,是的。但我也想确保我只更新我提取的 Record_ID(可能在拉取时其他 PO 可能已添加到系统中,我不想冒更新其中一个的风险当它们实际上没有被处理时使用 Run_ID。)所以我确实认为一种方法来验证已处理的 Record_ID 是否是获得正确 Run_ID 的方法是一种很好的方法,因此应该采用某种检查和平衡方法被包括在内。 【参考方案1】:

鉴于您提供的其他有用信息,我现在了解到您的担忧主要在于确保只有您提取的行是您稍后使用 RUN_ID 更新的行。

我能看到的最简单的方法是使用 PO_TYPE 列并引入类似“PO_Processing”的新状态。我不知道您的环境/数据模型,因此这可能可行,也可能不可行 - 也许您对可以在此处输入的内容有限制 - 但 SSIS 包步骤将如下所示:

    更新所需的 Oracle 行

update oracle_table set po_type = 'In_Transit_PO' where <your criteria>

    使用此状态作为选择标准执行您的数据提取 将数据加载到 SQL Server 中 将新的 RUN_ID 存储在包中的用户变量中 使用用户变量更新 SQL Server 行

update SQL_PO set Run_ID = (?) where <your criteria> ('?' maps to your defined package variable)

    更新 RUN_ID_TRACKER 以增加下一个 RUN_ID 使用用户变量通过映射来更新 Oracle 行(确切的语法可能略有不同,具体取决于您的包配置使用的提供程序)

update oracle_table set PO_Type = 'Processed_PO', RUN_ID='?' where PO_Type = 'In_Transit_PO'

这样做,您允许在负载运行时在 Oracle 端生成新的 PO,但您确保只有您提取的行是您使用 RUN_ID 更新的行。包中有几个额外的步骤,但每个步骤都非常简单。不仅如此,如果过程中出现错误,您可以准确记录它尝试处理的记录子集,从而使调试更容易。

想一想,您可以通过获取 run_id 值并将其放入变量 before 加载步骤来稍微减少步骤,然后在插入行 - 无需对 SQL_PO 表进行二次更新。

【讨论】:

以上是关于数据库oracle有没有类似sql server management studio这种可视化操作界面的主要内容,如果未能解决你的问题,请参考以下文章

Mysql、SQL server有没有PL/SQL?或者是类似PL/SQL的东西?PL/SQL是否存储过程?

oracle有没有类似sqlserver中include语句的覆盖索引?

请问oracle中有没有象SQL SERVER是的企业管理器类似的啊

oracle是不是有类似sql server企业管理器一样的工具?

oracle有没有类似sqlserver的查询分析器的工具呢本身

在Oracle 中有类似 sqlserver 中的unicode 的函数吗