none
請問由SQL2000 產生特別格式XML的方法? RRS feed

  • 問題

  • 各位大俠:
     
    請問 SQL2000 有提供那些工具或方式 可以 由資料庫中 產生 固定格式的 XML File ?
     
    由於需要與廠商的另一套系統交換資料. 廠商定義了一個複雜的 tag  XML 的格式.
    是否有那些圖形化工具可以使用以快速產生 對映 tag 的 xml file ?
    或是什麼方式可以快速產生 xml file ?
    還是只能用 T-SQL指令 一行一行寫?
     
    我查了一下用 sql 指令產生的方法... 發現..如果用此方法..
    大概要寫數百上千行 才能輸出廠商要的完整的格式...
    未來也不好維護管理...
    或是有什麼方法可以更方便更快完成??
     
    以上煩請指教協助~ 謝謝~~
     
     
     
     
    2007年4月25日 上午 03:41

解答

  • 您好:
    不知道您的格式是怎樣的?
    SQL Server 2000 本身就提供將查詢結果輸出成 XML 格式的指令: FOR XML
    下面的範例系由 pub 資料庫提取資料:
    指令範例
    SELECT store.stor_id as 公司編號,
           stor_name as 公司名稱,
           sale.ord_num as 訂單編號,
           sale.qty as 數量
    FROM stores store inner join sales sale on store.stor_id = sale.stor_id
    ORDER BY 公司名稱
    FOR XML <MODE>

    您可以嘗試將 <MODE> 分別指定為 RAWAUTOEXPLICIT 來看看其查詢結果。

    參考資料:
    A Survey of Microsoft SQL Server 2000 XML Features
    2007年4月25日 上午 05:37
    版主
  • 如果是 SQL Server 2000 又是複雜結構的話,只用 T-SQL 真的蠻難做到的 ...

    建議是利用外部程式來協助,不過也要看廠商與你們公司是如何交換資料的。

    2007年4月25日 上午 06:36
    版主

所有回覆

  • 您好:
    不知道您的格式是怎樣的?
    SQL Server 2000 本身就提供將查詢結果輸出成 XML 格式的指令: FOR XML
    下面的範例系由 pub 資料庫提取資料:
    指令範例
    SELECT store.stor_id as 公司編號,
           stor_name as 公司名稱,
           sale.ord_num as 訂單編號,
           sale.qty as 數量
    FROM stores store inner join sales sale on store.stor_id = sale.stor_id
    ORDER BY 公司名稱
    FOR XML <MODE>

    您可以嘗試將 <MODE> 分別指定為 RAWAUTOEXPLICIT 來看看其查詢結果。

    參考資料:
    A Survey of Microsoft SQL Server 2000 XML Features
    2007年4月25日 上午 05:37
    版主
  • 如果是 SQL Server 2000 又是複雜結構的話,只用 T-SQL 真的蠻難做到的 ...

    建議是利用外部程式來協助,不過也要看廠商與你們公司是如何交換資料的。

    2007年4月25日 上午 06:36
    版主
  •  

    你好 它的 xml 格式 如下:

     

    會有定義 結構, TAG, 及資料的展現方式. 內容是一個產品的基本資料. 及 經過每一次測試的測試數據. 是一個 Master-detail 的資料架構. 要產生成數個以 料號+日期為名稱的 xml 文字檔格式.

     

    請問有那些解決方案可以作到此方式的格式輸出呢?


    Code Snippet

    <?xml version="1.0" encoding="utf-8" ?>
    <TANGO_INLINE_FORMAT>
        <HEADER>
    $HEADER DATA AREA
     <VERSION>1.0</VERSION>
     <LOT_ID>1A1234</LOT_ID>
     <STEP_ID>BUMP</STEP_ID>
    </HEADER>
        <LIMITS>
    $LIMITS DATA AREA
      <TEST>$PARAMETER_ID1|$UNIT|$TARGET|$LO_SPEC|$HI_SPEC|$LO_LIMITS|$HI_LIMITS</TEST>
      <TEST>$PARAMETER_ID2|$UNIT|$TARGET|$LO_SPEC|$HI_SPEC|$LO_LIMITS|$HI_LIMITS</TEST>
      <TEST>$PARAMETER_ID3|$UNIT|$TARGET|$LO_SPEC|$HI_SPEC|$LO_LIMITS|$HI_LIMITS</TEST>
      <TEST>BUMP_HEIGHT1|um|15|12|18</TEST>
      <TEST>BUMP_HEIGHT2|um|15|12|18</TEST>
      <TEST>BUMP_COPLANARITY |um|||2.0</TEST>
      <TEST>BUMP_ROUGHNESS |um|||2.0</TEST>
      <TEST>HARDNESS |hv|50|30|70</TEST>
      <TEST> SHEAR |mg/um^2|||8.0</TEST>
      <TEST> BUMP_SIZE_WIDTH |um|43|40|46</TEST>
      <TEST> BUMP_SIZE_LENGTH |um|50|47|53</TEST>
      <TEST> PI_THICKNESS |um|3.6|3.2|4.0</TEST>
     </LIMITS>
        <DIEDATA>
     $PARAMETER DATA AREA
            <SITE NO="1" X="?" Y="?">
       <T>$Parameter_id|$value</T>
       <T>$Parameter_id|$value</T>
      </SITE>

     <SITE NO="2">
     <T>IL_BOTTOM_WIDTH_OUTPUT_SIDE|0.1708</T>
     <T>IL_TOP_WIDTH_OUTPUT_SIDE|0.1708</T>
     <T>OL_ALIGNMENT_MARK_INPUT_SIDE|0.1708</T>
     <T>OL_ALIGNMENT_MARK_OUTPUT_SIDE|0.1708</T>
     <T>OL_BOTTOM_WIDTH_INPUT_SIDE|0.1708</T>
     <T>OL_BOTTOM_WIDTH_OUTPUT_SIDE|0.1708</T>
     <T>OL_TOP_WIDTH_INPUT_SIDE|0.1708</T>
     <T>OL_TOP_WIDTH_OUTPUT_SIDE|0.1708</T>
     <T>OL_TOTAL_PITCH_INPUT_SIDE|0.1708</T>
     <T>OL_TOTAL_PITCH_OUTPUT_SIDE|0.1708</T>
     <T>PURE_TIN_THICKNESS|0.1708</T>
     <T>SR_AREA_INPUT_SIDE|0.1708</T>
     <T>SR_AREA_OUTPUT_SIDE|0.1708</T>
     <T>CU_THICKNESS|0.1708</T>
     </SITE>
     
     <SITE NO="3" X="?" Y="?">
     $PARAMETER DATA AREA
     </SITE>

    </DIEDATA>
    </TANGO_INLINE_FORMAT>

     

     

    2007年5月2日 上午 05:57