SQL Server - экспорт в xml-подобном формате без тегов? - PullRequest
1 голос
/ 19 июля 2010

Начиная с SQL Server 2005, мне нужно выполнить экспорт для клиента в XML-подобный формат, показанный ниже.Почему они не используют XML, я не знаю.Любые идеи о том, как сделать это быстро, не экспортируя файл «FOR XML», а затем написав грязный скрипт, чтобы просмотреть текстовый файл и найти и заменить <,> и каждый закрывающий тег XML?Спасибо.

START_FILE:
DATE:
COLUMN1:A
COLUMN2:B
COLUMN3:C
COLUMN1:D
COLUMN2:E
COLUMN3:F
COLUMN1:G
COLUMN2:H
COLUMN3:I
END_FILE:

Ответы [ 2 ]

1 голос
/ 19 июля 2010
DECLARE @Output nvarchar(max)
SET @Output = 'START_FILE:
DATE:'

SELECT @Output = @Output + '
COLUMN1:' + Col1 + '
COLUMN2:' + Col2 + '
COLUMN3:' + Col3
FROM YourTable
ORDER BY Col1

SELECT  @Output + '
END_FILE:' AS Result
0 голосов
/ 23 июля 2010

Я согласился с предложением Мартина попробовать запрос UNPIVOT, что было для меня в новинку.Используя SSIS, я теперь экспортирую запрос в текстовый файл, отформатированный так, как мне нужно, со временем выполнения всего несколько секунд.Я использую запрос, как показано ниже, с «:» в качестве разделителя столбцов.Отличное предложение, Мартин!

SELECT 'START_FILE' as FieldName, '' as 'FieldValue'
UNION ALL 
select 'DATE' as FieldName, getDate() as 'FieldValue'

UNION ALL

SELECT  FieldName, FieldValue
FROM
    (
    SELECT
    Cast(Column1Name as varchar) as VendorColumn1Name,
    Cast(Column2Name as varchar) as VendorColumn2Name,
    Cast(Column3Name as varchar) as VendorColumn3Name
    FROM MyTable
    ) c
    UNPIVOT
    (
    FieldValue for FieldName IN(VendorColumn1Name, VendorColumn2Name, VendorColumn3Name)
    ) as p

UNION ALL
SELECT 'END_FILE' as FieldName, '' as 'FieldValue'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...