【问题标题】:Oracle query to XML using SSISOracle 使用 SSIS 查询 XML
【发布时间】:2018-10-18 16:46:11
【问题描述】:

我继承了一个用于从 Oracle 数据库中提取信息的查询,他们现在想使用 SSIS 创建一个 XML 文件。到目前为止,我阅读了几个论坛和博客,并找到了一种连接方式,但不知道应该如何使用这个查询。我发现 Oracle 使用 XMLElement 创建 XML 但我得到了

遇到不支持的 Oracle 数据类型 USERDEFINED。 (System.Data.OracleClient)

当我尝试运行查询时。我将提供部分原始查询,因为它是相当大的代码

    SELECT

--SCHED_STASK.SCHED_ID,
ACFT_INV.INV_NO_SDESC AS "Aircraft",
SCHED_STASK.BARCODE_SDESC AS "Barcode",
EVT_EVENT.ACTUAL_START_DT AS "Act_Start_Dt",
EVT_EVENT.EVENT_DT AS "Act_End_Dt",
TASK_TASK.TASK_ORIGINATOR_CD AS "Originator",
SCHED_STASK.TASK_CLASS_CD AS "Class",
SCHED_STASK.TASK_SUBCLASS_CD AS "SubClass",
EVT_EVENT.EVENT_STATUS_CD AS "Status",

CASE
  WHEN TASK_TASK.TASK_CD is null THEN null
  WHEN TASK_TASK.TASK_CD is not null THEN TASK_TASK.TASK_CD||' ('||TASK_TASK.TASK_NAME||')' 
END AS "Task Defn",

ORG_HR.HR_CD AS "Employee number / ID",
SCHED_WORK_TYPE.WORK_TYPE_CD AS "Worktype",
EVT_STAGE.STAGE_DT AS "Signed Date"
......
and a huge bunch of left joins. then the where clause 

所以有人可以指导我如何解决这种情况我会非常高兴,使用 Oracle 的新手,我对 MS SQL + SSIS 比 Oracle + SSIS 更熟悉

【问题讨论】:

    标签: sql oracle ssis sql-server-data-tools


    【解决方案1】:

    如果我理解正确,您希望从 oracle sql 输出 xml?试试这个!

    with data as(SELECT
    'Blériot' AS Aircraft,
    1234 AS BARCODE,
    DATE '2018-01-01'  ACT_START_DT,
    DATE '2018-02-01' ACT_END_DT,
    'Louis' Originator,
    'XI' Class,
    'Civil tourer/trainer/military' SubClass,
    'Obsolete but cool' Status,
    
    CASE
      WHEN 'Rebuild on mass' IS NULL THEN NULL
      WHEN 'Rebuild on mass' IS NOT NULL THEN 'Rebuild on mass'||' ('||'Splinters in the sky'||')' 
    END "Task Defn",
    
    666 AS "Employee number / ID",
    'capentry and seamstressing' Worktype,
    DATE '2018-02-01'  "Signed Date"
    from dual)
    
    SELECT XMLELEMENT("Project",
    (XMLELEMENT("Aircraft",AIRCRAFT)),
    (XMLELEMENT("BARCODE",BARCODE)),
    (XMLELEMENT("ACT_START_DT",ACT_START_DT)),
    (XMLELEMENT("ACT_END_DT",ACT_END_DT)),
    (XMLELEMENT("Originator",Originator)),
    (XMLELEMENT("Class",Class)),
    (XMLELEMENT("SubClass",SubClass)),
    (XMLELEMENT("Status",Status)),
    (XMLELEMENT("Task Defn","Task Defn")),
    (XMLELEMENT("Employee number / ID","Employee number / ID")),
    (XMLELEMENT("Worktype",Worktype)),
    (XMLELEMENT("Signed Date","Signed Date"))
    )
    from data
    

    结果:

    <Project>
        <Aircraft>Blériot</Aircraft>
        <BARCODE>1234</BARCODE>
        <ACT_START_DT>2018-01-01</ACT_START_DT>
        <ACT_END_DT>2018-02-01</ACT_END_DT>
        <Originator>Louis</Originator>
        <Class>XI</Class>
        <SubClass>Civil tourer/trainer/military</SubClass>
        <Status>Obsolete but cool</Status>
        <Task Defn>Rebuild on mass (Splinters in the sky)</Task Defn>
        <Employee number / ID>666</Employee number / ID>
        <Worktype>capentry and seamstressing</Worktype>
        <Signed Date>2018-02-01</Signed Date>
    </Project>
    

    【讨论】:

    • 感谢 W_O_L_F 的回答,这部分是我所做的,但是当我尝试使用我正在尝试的 SSIS 上的 Ado.net 任务使用此查询时,我的问题的另一半使用我得到了和 Userdefined 类似的错误,所以我被卡住了。
    【解决方案2】:

    对于这种特殊情况,我决定使用我下载的另一个ssis控件,似乎这里公司使用的设置不允许oracle和ms ssis之间的良好交互。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 2014-03-13
      • 2014-01-20
      • 1970-01-01
      • 2015-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多