Udostępnij za pośrednictwem


Ładowanie danych XML

Można przesłać dane XML z SQL Server 2000 Aby SQL Server 2005 lub SQL Server 2008 na kilka sposobów. Na przykład:

  • Jeśli masz dane [n] tekstu lub obrazu w kolumna w SQL Server 2000 bazy danych, można zaimportować tabela do bazy danych z nowszych wersja za pomocą Integration Services. Zmień typ kolumna do formatu XML przy użyciu instrukcja ALTER tabela.

  • Użytkownik może zbiorczej kopiowanie danych z SQL Server 2000 za pomocą bcp wyjściowego, a następnie zbiorczej Wstawianie danych do nowszej wersja bazy danych za pomocą bcp.

  • Jeśli masz dane w kolumnach relacyjnej SQL Server 2000 bazy danych, Utwórz nową tabela z kolumną [n] tekstu i, opcjonalnie, kolumna klucz podstawowy dla identyfikatora wiersza. Za pomocą programowania w celu pobrania pliku XML, który jest generowany na serwerze za pomocą języka XML dla strony klient i zapisuje je w [n]text Kolumna. Następnie użyj technik opisanych powyżej, aby przesłać dane do bazy danych z nowszej wersja.Można zapisać bezpośrednio XML w kolumna XML w nowszej wersja.

Zbiorcze ładowanie danych XML

Zbiorcza ładowania danych XML do serwera przy użyciu ładowanie zbiorcze możliwości SQL Server, takie jak bcp. OPENROWSET umożliwia załadowanie danych do kolumną XML z plików.Poniższy przykład ilustruje ten punkt.

Przykład: Trwa ładowanie XML z plików

W tym przykładzie pokazano, jak wstawić wiersz w tabela T.Wartości kolumna XML jest ładowany z pliku C:\MyFile\xmlfile.xml jako CLOB i jest podany kolumna liczb całkowitych wartość 10.

INSERT INTO T
SELECT 10, xCol
FROM    (SELECT *    
    FROM OPENROWSET (BULK 'C:\MyFile\xmlfile.xml', SINGLE_CLOB) 
 AS xCol) AS R(xCol)

Kodowanie tekstu

SQL Server przechowuje dane XML w kodzie Unicode (UTF-16).Dane XML pobrane z serwera znajduje przy użyciu kodowania UTF-16.Chcąc innego kodowania, trzeba konwersji wymagane są wykonywane na pobranych danych.Dane XML może być czasami innego kodowania.Jeśli tak jest, należy zachować ostrożność podczas ładowania danych.Na przykład:

  • Jeśli tekst publikacji XML w kodzie Unicode (UCS-2, UTF-16), można przypisać go do kolumna XML, zmiennej lub parametru bez problemów.

  • Jeśli kodowanie nie jest kodowana w standardzie Unicode i jest pośrednie, ze względu na stronie kodu źródłowego, strona kodowa ciąg w bazie danych powinien być taki sam lub zgodny z punktów kodowych, który chcesz załadować.Jeśli to konieczne, użyj COLLATE.Jeśli nie takie strona kodowa serwera, należy dodać jawna deklaracja XML z kodowaniem poprawne.

  • Aby za pomocą jawnych kodowanie, użyj jednej varbinary() tekst, który posiada bez interakcji ze stron kodowych, lub użyj typu ciąg odpowiednią strona kodowa. Następnie należy przypisać dane XML kolumna, zmiennej lub parametru.

Przykład: Określanie jawnie Encoding

Załóżmy, że dokument XML, vcdoc, przechowywane jako varchar(max) który nie ma jawnej deklaracja XML. Poniższa instrukcja dodaje deklaracja XML z kodowania "iso8859-1", argument dokumentu XML, rzutowana wynik varbinary(max) reprezentacja bajt jest zachowywany, a następnie na końcu rzutowana go do formatu XML. Dzięki temu procesor XML analizuje dane zgodnie z określonym kodowania "iso8859-1" i wygenerować reprezentacji UTF-16 odpowiadające im wartości ciąg.

SELECT CAST( 
CAST (('<?xml version="1.0" encoding="iso8859-1"?>'+ vcdoc) AS VARBINARY (MAX)) 
 AS XML)

Ciąg Encoding niezgodności

Jeżeli kopiujesz i wklejasz XML jako literał ciągu znaków w oknie Edytora kwerend w SQL Server Management Studio, mogą występować ciąg [N] VARCHAR kodowania niezgodności. Będzie to zależało od kodowania wystąpienie XML.W wielu przypadkach można usunąć deklaracja XML.Na przykład:

<?xml version="1.0" encoding="UTF-8"?>
  <xsd:schema …

Następnie należy dołączyć N, aby utworzyć plik XML wystąpienia wystąpienie Unicode.Na przykład:

-- Assign XML instance to a variable.
DECLARE @X XML
SET @X = N'…'
-- Insert XML instance into an xml type column.
INSERT INTO T VALUES (N'…')
-- Create an XML schema collection
CREATE XML SCHEMA COLLECTION XMLCOLL1 AS N'<xsd:schema … '