XMLをSQL Server 2008データベースに挿入します
-
26-09-2019 - |
質問
こんにちは、SQL Server 2008のテーブルにいくつかのXMLデータを挿入しようとしています。ただし、このエラーを投げ続けています。
XML解析:行1、文字39、エンコードを切り替えることができません
データベース列FileMetaはXMLデータ型を使用し、XMLデータを追加するために必要だと思われるUTF-16にエンコードを切り替えます。
INSERT INTO testfiles
(filename, filemeta)
VALUES
('test.mp3', '<?xml version="1.0" encoding="utf-16" standalone="yes"?><!--This is a test XML file--><filemeta filetype="Audio"><Comments /><AlbumTitle /><TrackNumber /><ArtistName /><Year /><Genre /><TrackTitle /></filemeta>');
助けて、私は立ち往生しています。
NB:XMLTextWriterを使用してXMLを作成しました。
解決
はい、XMLをSQL Server 2008に挿入しようとすると問題があり、XMLにはエンコード命令ラインが含まれています。
私は通常、を使用して回ります CONVERT
SQL Serverにそれらの指示をスキップするように指示できる関数 - 次のようなものを使用してください。
INSERT INTO testfiles
(filename, filemeta)
VALUES
('test.mp3', CONVERT(XML, N'<?xml version="1.0" encoding="utf-16" standalone="yes"?>......', 2));
それは間違いなく、私がさまざまなエンコードされたXMLのものをSQL Serverに入れるのに役立ちました。
を参照してください キャストと変換のMSDNドキュメント - ページの少し下には、使用できるスタイルがいくつかあります CONVERT
と XML
そしてそれらについてのいくつかの説明。
他のヒント
含める必要があります n XML文字列の前で、Unicodeにします。
INSERT INTO testfiles
(filename, filemeta)
VALUES
('test.mp3', N'<?xml version="1.0" encoding="utf-16" standalone="yes"?><!--This is a test XML file--><filemeta filetype="Audio"><Comments /><AlbumTitle /><TrackNumber /><ArtistName /><Year /><Genre /><TrackTitle /></filemeta>');
これはエラーなしで私のために機能しました:
DECLARE @input XML
SET @input = N'<?xml version="1.0" encoding="utf-16" standalone="yes"?><!--This is a test XML file--><filemeta filetype="Audio"><Comments /><AlbumTitle /><TrackNumber /><ArtistName /><Year /><Genre /><TrackTitle /></filemeta>'
INSERT INTO testfiles (filename, filemeta)
VALUES ('test.mp3', @input);
所属していません StackOverflow