将多维XML转换为mssq

2024-05-15 00:03:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建从xml到mssql的转换器数据。你知道吗

XML具有多维数据(12维)。关于xml文件的一些信息:我有大约100个文件,每个文件有大约20MB。在代码中我将附加示例。你知道吗

我需要的是从xml中获取数据并将它们粘贴到mssql中。你知道吗

我试过使用MSSQLBCP工具或pymssql。一切都不成功。你知道吗

<DATA>
  <LHC LHC_KOD="109999" LHC_NAZ="Place02" LHP_OD="1.1.2000">
    <ODD ODD="1">
      <DIL DIL="A">
        <POR POR="a" SDR_POR="N" MAJ_KOD="222" HIST_ROZD="">
          <KAT KATEGORIE="10" KAT_SPEC="0"/>
          <PSK PSK="4" PSK_P0="0.3600" PSK_V="0.3600">
            <PSK_OBRAZ>
              <MP>
                <P>
                  <L>
                    <B S="5999999.299951$700007.977771"/>
                    <B S="5999998.299952$700008.977772"/>
                    <B S="5999997.299953$700009.977773"/>
                    <B S="5999996.299954$700003.977774"/>
                    <B S="5999995.299955$700002.977775"/>
                    <B S="5999994.299956$700001.977776"/>
                    <B S="5999993.299957$700000.977777"/>
                    <B S="5999992.299958$700004.977778"/>
                    <B S="5999991.299959$700005.977779"/>
                  </L>
                </P>
              </MP>
            </PSK_OBRAZ>
            <ETZ ETAZ="4" ETAZ_PS="0.46" ETAZ_PP="0.46" ZAL_P="">
              <DRV DR_ZKR="JJ" DR_KOD="65" DR_NAZ="Jab Joj" DR_PUVOD="".../>
              <DRV DR_ZKR="PO" DR_KOD="29" DR_NAZ="Pabc Ols" DR_PUVOD="".../>
              <DRV DR_ZKR="ER" DR_KOD="63" DR_NAZ="Eabc Reww" DR_PUVOD="".../>
            </ETZ>
          </PSK>
        </POR>
      </DIL>
      <DIL DIL="B">
    ...
      </DIL>
      <DIL DIL="C">
    ...
      </DIL>
    </ODD>
    <ODD ODD="2">
    ...
    </ODD>
    <KBO BOD_DRUH="150" BOD_ZNACKA="2005" BOD_UHELZN="8.58"  BOD_BARVA="14">
      <BOD_OBRAZ> <MB> <B S="1234567.555555$456987.593248"/> </MB>
      </BOD_OBRAZ>
    </KBO>
    <KBO BOD_DRUH="150" BOD_ZNACKA="2005" BOD_UHELZN="3.64"  BOD_BARVA="14">
      <BOD_OBRAZ> <MB> <B S="1787878.592654$568987.122154"/> </MB>
      </BOD_OBRAZ>
    </KBO>
...
...
...

我希望在mssql中得到结果(connections tables via ID…)。稍后我想用坐标来连接第三部分。你知道吗

你知道怎么解决吗?你知道吗

谢谢


Tags: 文件mbxmloddmssqlpordrnaz
1条回答
网友
1楼 · 发布于 2024-05-15 00:03:22

首先使用OPENROWSET加载数据:

CREATE TABLE XMLdata
(
    XMLData XML
);

INSERT INTO XMLdata(XMLData)
SELECT CONVERT(XML, BulkColumn) AS BulkColumn
FROM OPENROWSET(BULK 'c:\temp\test.xml', SINGLE_BLOB) AS x;

SELECT * FROM XMLdata;

然后可以使用OPENXML提取数据,例如:

DECLARE @XML AS XML, @handle AS INT;
SELECT @XML = XMLData FROM XMLdata;
EXEC sp_xml_preparedocument @handle OUTPUT, @XML;

SELECT LHC_KOD,
       LHC_NAZ,
       LHP_OD
FROM OPENXML(@handle, 'DATA/LHC')
WITH 
(
    LHC_KOD [varchar](50) '@LHC_KOD',
    LHC_NAZ [varchar](100) '@LHC_NAZ',
    LHP_OD [varchar](100) '@LHP_OD'
);

EXEC sp_xml_removedocument @handle;

相关问题 更多 >

    热门问题