XMLファイルをMS SQL Serverテーブルに変換しようとしていますが、最初の行のみが挿入されます。誰でもこれを説明できますか?Insert into Selectは1行だけを挿入します
データをインポートするには、insert selectを使用しています。私はすべてを試しましたが、コードは非常に剥がれており、これを修正する方法はわかりません。
CREATE DATABASE lei_1
GO
USE lei_1
GO
CREATE TABLE lei_1_table
(
Id INT IDENTITY PRIMARY KEY,
XMLData XML,
LoadedDateTime DATETIME
)
CREATE TABLE recordsx
(
LegalName VARCHAR(100),
la_Line1 [varchar](100),
la_Line2 [varchar](100),
la_City [varchar](100),
la_Region [varchar](100),
la_Country [varchar](100),
la_PostalCode [varchar](100)
);
INSERT INTO lei_1_table(XMLData, LoadedDateTime)
SELECT CONVERT(XML, BulkColumn) AS BulkColumn, GETDATE()
FROM OPENROWSET(BULK 'C:\lei_example2.xml', SINGLE_BLOB) AS x;
SELECT * FROM lei_1_table
DECLARE @XML AS XML, @hDoc AS INT, @SQL NVARCHAR (MAX)
SELECT @XML = XMLData FROM lei_1_table
EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML, '<lei:LEIData xmlns:lei="http://www.leiroc.org/data/schema/leidata/2014" />'
SELECT LegalName, la_Line1, la_Line2, la_City, la_Region, la_Country, la_PostalCode
FROM OPENXML(@hDoc, 'lei:LEIData')
WITH
(
LegalName [varchar](100) 'lei:LEIRecords/lei:LEIRecord/lei:Entity/lei:LegalName',
la_Line1 [varchar](100) 'lei:LEIRecords/lei:LEIRecord/lei:Entity/lei:LegalAddress/lei:Line1',
la_Line2 [varchar](100) 'lei:LEIRecords/lei:LEIRecord/lei:Entity/lei:LegalAddress/lei:Line2',
la_City [varchar](100) 'lei:LEIRecords/lei:LEIRecord/lei:Entity/lei:LegalAddress/lei:City',
la_Region [varchar](100) 'lei:LEIRecords/lei:LEIRecord/lei:Entity/lei:LegalAddress/lei:Region',
la_Country [varchar](100) 'lei:LEIRecords/lei:LEIRecord/lei:Entity/lei:LegalAddress/lei:Country',
la_PostalCode [varchar](100) 'lei:LEIRecords/lei:LEIRecord/lei:Entity/lei:LegalAddress/lei:PostalCode'
)
insert into recordsx(LegalName, la_Line1, la_Line2, la_City, la_Region, la_Country, la_PostalCode)
SELECT LegalName, la_Line1, la_Line2, la_City, la_Region, la_Country, la_PostalCode FROM OPENXML(@hDoc, 'lei:LEIData')
WITH
(
LegalName [varchar](100) 'lei:LEIRecords/lei:LEIRecord/lei:Entity/lei:LegalName',
la_Line1 [varchar](100) 'lei:LEIRecords/lei:LEIRecord/lei:Entity/lei:LegalAddress/lei:Line1',
la_Line2 [varchar](100) 'lei:LEIRecords/lei:LEIRecord/lei:Entity/lei:LegalAddress/lei:Line2',
la_City [varchar](100) 'lei:LEIRecords/lei:LEIRecord/lei:Entity/lei:LegalAddress/lei:City',
la_Region [varchar](100) 'lei:LEIRecords/lei:LEIRecord/lei:Entity/lei:LegalAddress/lei:Region',
la_Country [varchar](100) 'lei:LEIRecords/lei:LEIRecord/lei:Entity/lei:LegalAddress/lei:Country',
la_PostalCode [varchar](100) 'lei:LEIRecords/lei:LEIRecord/lei:Entity/lei:LegalAddress/lei:PostalCode'
)
SELECT * FROM recordsx
EXEC sp_xml_removedocument @hDoc
GO
は、ここに私のXMLです:あなたのクエリがしかファイルの内容全体を単一の行を取得する予定ですので、
<lei:LEIData xmlns:lei="http://www.leiroc.org/data/schema/leidata/2014">
<lei:LEIRecords>
<lei:LEIRecord>
<lei:LEI>48510000JZ17NWGUA510</lei:LEI>
<lei:Entity>
<lei:LegalName>KDD - Centralna klirin</lei:LegalName>
<lei:LegalAddress>
<lei:Line1>Tivolska cesta 48</lei:Line1>
<lei:City>Ljubljana</lei:City>
<lei:Country>SI</lei:Country>
<lei:PostalCode>1000</lei:PostalCode>
</lei:LegalAddress>
</lei:Entity>
</lei:LEIRecord>
<lei:LEIRecord>
<lei:LEI>485100004VOFFO18DD84</lei:LEI>
<lei:Entity>
<lei:LegalName>NLB VITljana</lei:LegalName>
<lei:LegalAddress>
<lei:Line1>Trg republike 3</lei:Line1>
<lei:City>Ljubljana</lei:City>
<lei:Country>SI</lei:Country>
<lei:PostalCode>1000</lei:PostalCode>
</lei:LegalAddress>
</lei:Entity>
</lei:LEIRecord>
</lei:LEIRecords>
</lei:LEIData>
xmlを表示する必要があります。 – granadaCoder
あなたの例はすべてうまくロードされているようです。何が問題なのですか? –
ありがとう、MS SQL Serverで実行すると、最初の行のみが作成されます。 –