Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将XML数据导入SQL 2019只返回NULL或空值_Sql_Sql Server_Xml_Xquery - Fatal编程技术网

将XML数据导入SQL 2019只返回NULL或空值

将XML数据导入SQL 2019只返回NULL或空值,sql,sql-server,xml,xquery,Sql,Sql Server,Xml,Xquery,我在XML文件中有以下数据: <?xml version="1.0" encoding="utf-16"?> <documents> <document ArchivedFileName="20254834\21507.tif" DocumentId="21507" FileSize="525208" OriginalFileName="20254834

我在XML文件中有以下数据:

<?xml version="1.0" encoding="utf-16"?>
<documents>
  <document ArchivedFileName="20254834\21507.tif" DocumentId="21507" FileSize="525208" OriginalFileName="20254834_439303_20090613_105156_564.tif" DocumentTypeName="5" FileNumber="20254834" RecordingNumber="&lt;NULL&gt;" Description="" CreationDate="8/24/2006 12:00:00 AM" ModificationDate="8/24/2006 12:00:00 AM" VersionId="1" />
  <document ArchivedFileName="20288517\69932.tif" DocumentId="69932" FileSize="35342" OriginalFileName="20288517_126_20090613_121001_591.tif" DocumentTypeName="49" FileNumber="20288517" RecordingNumber="&lt;NULL&gt;" Description="#1" CreationDate="8/30/2006 12:00:00 AM" ModificationDate="8/30/2006 12:00:00 AM" VersionId="1" />
  <document ArchivedFileName="20257573\21600.tif" DocumentId="21600" FileSize="33519" OriginalFileName="20257573_408080_20090613_105204_562.tif" DocumentTypeName="25" FileNumber="20257573" RecordingNumber="&lt;NULL&gt;" Description="GI RUN" CreationDate="9/12/2006 12:00:00 AM" ModificationDate="10/30/2020 2:43:55 PM" VersionId="1" />
</documents>
你能帮帮我,告诉我我做错了什么吗?我对XML不是非常熟悉,我已经复制/粘贴了其中的一些脚本


谢谢

XQuery区分大小写,使用
@
访问属性

比如:

declare @X xml = '
<documents>
  <document ArchivedFileName="20254834\21507.tif" DocumentId="21507" FileSize="525208" OriginalFileName="20254834_439303_20090613_105156_564.tif" DocumentTypeName="5" FileNumber="20254834" RecordingNumber="&lt;NULL&gt;" Description="" CreationDate="8/24/2006 12:00:00 AM" ModificationDate="8/24/2006 12:00:00 AM" VersionId="1" />
  <document ArchivedFileName="20288517\69932.tif" DocumentId="69932" FileSize="35342" OriginalFileName="20288517_126_20090613_121001_591.tif" DocumentTypeName="49" FileNumber="20288517" RecordingNumber="&lt;NULL&gt;" Description="#1" CreationDate="8/30/2006 12:00:00 AM" ModificationDate="8/30/2006 12:00:00 AM" VersionId="1" />
  <document ArchivedFileName="20257573\21600.tif" DocumentId="21600" FileSize="33519" OriginalFileName="20257573_408080_20090613_105204_562.tif" DocumentTypeName="25" FileNumber="20257573" RecordingNumber="&lt;NULL&gt;" Description="GI RUN" CreationDate="9/12/2006 12:00:00 AM" ModificationDate="10/30/2020 2:43:55 PM" VersionId="1" />
</documents>';
select 
  MY_XML.document.value('@ArchivedFileName', 'VARCHAR(100)'),
  MY_XML.document.value('@DocumentId', 'VARCHAR(100)'),--,
  MY_XML.document.value('@FileSize', 'VARCHAR(100)'),
  MY_XML.document.value('@OriginalFileName', 'VARCHAR(100)'),
  MY_XML.document.value('@DocumentTypeName', 'VARCHAR(100)'),
  MY_XML.document.value('@FileNumber', 'VARCHAR(100)'),
  MY_XML.document.value('@RecordingNumber', 'VARCHAR(100)'),
  MY_XML.document.value('@Description', 'VARCHAR(100)'),
  MY_XML.document.value('@CreationDate', 'VARCHAR(100)'),
  MY_XML.document.value('@ModificationDate', 'VARCHAR(100)'),
  MY_XML.document.value('@VersionId', 'VARCHAR(100)')
from @X.nodes('/documents/document') AS MY_XML (document);
declare@xxml='1〕
';
挑选
MY_XML.document.value('@ArchivedFileName','VARCHAR(100)'),
MY_XML.document.value('@DocumentId','VARCHAR(100)'),--,
MY_XML.document.value('@FileSize','VARCHAR(100)'),
MY_XML.document.value('@OriginalFileName','VARCHAR(100)'),
MY_XML.document.value('@DocumentTypeName','VARCHAR(100)'),
MY_XML.document.value('@FileNumber','VARCHAR(100)'),
MY_XML.document.value('@RecordingNumber','VARCHAR(100)'),
MY_XML.document.value('@Description','VARCHAR(100)'),
MY_XML.document.value('@CreationDate','VARCHAR(100)'),
MY_XML.document.value('@ModificationDate','VARCHAR(100)'),
MY_XML.document.value('@VersionId','VARCHAR(100)'
从@X.nodes('/documents/document')作为我的XML(文档);

XQuery区分大小写,使用
@
访问属性

比如:

declare @X xml = '
<documents>
  <document ArchivedFileName="20254834\21507.tif" DocumentId="21507" FileSize="525208" OriginalFileName="20254834_439303_20090613_105156_564.tif" DocumentTypeName="5" FileNumber="20254834" RecordingNumber="&lt;NULL&gt;" Description="" CreationDate="8/24/2006 12:00:00 AM" ModificationDate="8/24/2006 12:00:00 AM" VersionId="1" />
  <document ArchivedFileName="20288517\69932.tif" DocumentId="69932" FileSize="35342" OriginalFileName="20288517_126_20090613_121001_591.tif" DocumentTypeName="49" FileNumber="20288517" RecordingNumber="&lt;NULL&gt;" Description="#1" CreationDate="8/30/2006 12:00:00 AM" ModificationDate="8/30/2006 12:00:00 AM" VersionId="1" />
  <document ArchivedFileName="20257573\21600.tif" DocumentId="21600" FileSize="33519" OriginalFileName="20257573_408080_20090613_105204_562.tif" DocumentTypeName="25" FileNumber="20257573" RecordingNumber="&lt;NULL&gt;" Description="GI RUN" CreationDate="9/12/2006 12:00:00 AM" ModificationDate="10/30/2020 2:43:55 PM" VersionId="1" />
</documents>';
select 
  MY_XML.document.value('@ArchivedFileName', 'VARCHAR(100)'),
  MY_XML.document.value('@DocumentId', 'VARCHAR(100)'),--,
  MY_XML.document.value('@FileSize', 'VARCHAR(100)'),
  MY_XML.document.value('@OriginalFileName', 'VARCHAR(100)'),
  MY_XML.document.value('@DocumentTypeName', 'VARCHAR(100)'),
  MY_XML.document.value('@FileNumber', 'VARCHAR(100)'),
  MY_XML.document.value('@RecordingNumber', 'VARCHAR(100)'),
  MY_XML.document.value('@Description', 'VARCHAR(100)'),
  MY_XML.document.value('@CreationDate', 'VARCHAR(100)'),
  MY_XML.document.value('@ModificationDate', 'VARCHAR(100)'),
  MY_XML.document.value('@VersionId', 'VARCHAR(100)')
from @X.nodes('/documents/document') AS MY_XML (document);
declare@xxml='1〕
';
挑选
MY_XML.document.value('@ArchivedFileName','VARCHAR(100)'),
MY_XML.document.value('@DocumentId','VARCHAR(100)'),--,
MY_XML.document.value('@FileSize','VARCHAR(100)'),
MY_XML.document.value('@OriginalFileName','VARCHAR(100)'),
MY_XML.document.value('@DocumentTypeName','VARCHAR(100)'),
MY_XML.document.value('@FileNumber','VARCHAR(100)'),
MY_XML.document.value('@RecordingNumber','VARCHAR(100)'),
MY_XML.document.value('@Description','VARCHAR(100)'),
MY_XML.document.value('@CreationDate','VARCHAR(100)'),
MY_XML.document.value('@ModificationDate','VARCHAR(100)'),
MY_XML.document.value('@VersionId','VARCHAR(100)'
从@X.nodes('/documents/document')作为我的XML(文档);

以下是该任务的完整解决方案


您的XML是基于属性的。这就是为什么您将XML作为元素处理的尝试没有成功<代码>和
这是任务的完整解决方案

您的XML是基于属性的。这就是为什么您将XML作为元素处理的尝试没有成功<代码>

--/////////////////////////////  NULL VALUES
SELECT
MY_XML.document.value('(ArchivedFileName/text())[1]', 'VARCHAR(100)')--,
FROM (SELECT CAST(MY_XML AS xml)
FROM OPENROWSET(BULK 'C:\temp\Index3_sample.xml', SINGLE_BLOB) AS T(MY_XML)) AS T(MY_XML)
CROSS APPLY MY_XML.nodes('documents/document') AS MY_XML (document);
--/////////////////////  EMPTY VALUES
select 
my_xml.Document.query('ArchivedFileName').value('.', 'Varchar(100)')
from (select cast(my_xml as xml)
from openrowset (bulk 'C:\temp\Index3_sample.xml', single_blob)
as t(my_xml)) as T(my_xml)
cross apply my_xml.nodes('documents/document')
as my_xml (document);
declare @X xml = '
<documents>
  <document ArchivedFileName="20254834\21507.tif" DocumentId="21507" FileSize="525208" OriginalFileName="20254834_439303_20090613_105156_564.tif" DocumentTypeName="5" FileNumber="20254834" RecordingNumber="&lt;NULL&gt;" Description="" CreationDate="8/24/2006 12:00:00 AM" ModificationDate="8/24/2006 12:00:00 AM" VersionId="1" />
  <document ArchivedFileName="20288517\69932.tif" DocumentId="69932" FileSize="35342" OriginalFileName="20288517_126_20090613_121001_591.tif" DocumentTypeName="49" FileNumber="20288517" RecordingNumber="&lt;NULL&gt;" Description="#1" CreationDate="8/30/2006 12:00:00 AM" ModificationDate="8/30/2006 12:00:00 AM" VersionId="1" />
  <document ArchivedFileName="20257573\21600.tif" DocumentId="21600" FileSize="33519" OriginalFileName="20257573_408080_20090613_105204_562.tif" DocumentTypeName="25" FileNumber="20257573" RecordingNumber="&lt;NULL&gt;" Description="GI RUN" CreationDate="9/12/2006 12:00:00 AM" ModificationDate="10/30/2020 2:43:55 PM" VersionId="1" />
</documents>';
select 
  MY_XML.document.value('@ArchivedFileName', 'VARCHAR(100)'),
  MY_XML.document.value('@DocumentId', 'VARCHAR(100)'),--,
  MY_XML.document.value('@FileSize', 'VARCHAR(100)'),
  MY_XML.document.value('@OriginalFileName', 'VARCHAR(100)'),
  MY_XML.document.value('@DocumentTypeName', 'VARCHAR(100)'),
  MY_XML.document.value('@FileNumber', 'VARCHAR(100)'),
  MY_XML.document.value('@RecordingNumber', 'VARCHAR(100)'),
  MY_XML.document.value('@Description', 'VARCHAR(100)'),
  MY_XML.document.value('@CreationDate', 'VARCHAR(100)'),
  MY_XML.document.value('@ModificationDate', 'VARCHAR(100)'),
  MY_XML.document.value('@VersionId', 'VARCHAR(100)')
from @X.nodes('/documents/document') AS MY_XML (document);
<?xml version="1.0" encoding="utf-16"?>
<documents>
    <document ArchivedFileName="20254834\21507.tif" DocumentId="21507"
              FileSize="525208"
              OriginalFileName="20254834_439303_20090613_105156_564.tif"
              DocumentTypeName="5" FileNumber="20254834"
              RecordingNumber="&lt;NULL&gt;" Description=""
              CreationDate="8/24/2006 12:00:00 AM"
              ModificationDate="8/24/2006 12:00:00 AM" VersionId="1"/>
    <document ArchivedFileName="20288517\69932.tif" DocumentId="69932"
              FileSize="35342"
              OriginalFileName="20288517_126_20090613_121001_591.tif"
              DocumentTypeName="49" FileNumber="20288517"
              RecordingNumber="&lt;NULL&gt;" Description="#1"
              CreationDate="8/30/2006 12:00:00 AM"
              ModificationDate="8/30/2006 12:00:00 AM" VersionId="1"/>
    <document ArchivedFileName="20257573\21600.tif" DocumentId="21600"
              FileSize="33519"
              OriginalFileName="20257573_408080_20090613_105204_562.tif"
              DocumentTypeName="25" FileNumber="20257573"
              RecordingNumber="&lt;NULL&gt;" Description="GI RUN"
              CreationDate="9/12/2006 12:00:00 AM"
              ModificationDate="10/30/2020 2:43:55 PM" VersionId="1"/>
</documents>
WITH rs (xmlData) AS
(
   SELECT TRY_CAST(BulkColumn AS XML) 
   FROM OPENROWSET(BULK N'e:\Temp\Index3_sample.xml', SINGLE_BLOB) AS x
)
--INSERT INTO targetTable (...)
SELECT c.value('@ArchivedFileName', 'VARCHAR(100)') AS ArchivedFileName
    , c.value('@DocumentId', 'INT') AS DocumentId
    , c.value('@FileSize', 'INT') AS FileSize
    , c.value('@OriginalFileName', 'VARCHAR(100)') AS OriginalFileName
    , c.value('@DocumentTypeName', 'INT') AS DocumentTypeName
    , c.value('@FileNumber', 'INT') AS FileNumber
    , c.value('@RecordingNumber', 'VARCHAR(100)') AS RecordingNumber
    , c.value('@Description', 'VARCHAR(100)') AS [Description]
    , c.value('@CreationDate', 'DATETIME') AS CreationDate
    , c.value('@ModificationDate', 'DATETIME') AS ModificationDate
    , c.value('@VersionId', 'INT')AS VersionId
FROM rs 
   CROSS APPLY xmlData.nodes('/documents/document') AS t(c);
+--------------------+------------+----------+-----------------------------------------+------------------+------------+-----------------+-------------+-------------------------+-------------------------+-----------+
|  ArchivedFileName  | DocumentId | FileSize |            OriginalFileName             | DocumentTypeName | FileNumber | RecordingNumber | Description |      CreationDate       |    ModificationDate     | VersionId |
+--------------------+------------+----------+-----------------------------------------+------------------+------------+-----------------+-------------+-------------------------+-------------------------+-----------+
| 20254834\21507.tif |      21507 |   525208 | 20254834_439303_20090613_105156_564.tif |                5 |   20254834 | <NULL>          |             | 2006-08-24 00:00:00.000 | 2006-08-24 00:00:00.000 |         1 |
| 20288517\69932.tif |      69932 |    35342 | 20288517_126_20090613_121001_591.tif    |               49 |   20288517 | <NULL>          | #1          | 2006-08-30 00:00:00.000 | 2006-08-30 00:00:00.000 |         1 |
| 20257573\21600.tif |      21600 |    33519 | 20257573_408080_20090613_105204_562.tif |               25 |   20257573 | <NULL>          | GI RUN      | 2006-09-12 00:00:00.000 | 2020-10-30 14:43:55.000 |         1 |
+--------------------+------------+----------+-----------------------------------------+------------------+------------+-----------------+-------------+-------------------------+-------------------------+-----------+