2013-06-12 5 views
1

У меня есть таблица Access, которая содержит два столбца: [ID] и [Name]. Здесь содержится более 3000 строк данных. В настоящее время я скопировал и вставил таблицу в файл .txt, где он должен жить.Преобразование данных из Access в SQL Server 2008 R2

Пример того, как выглядит данные:

A0001 esfesef fgrdgdrd 
A0002 fsefgeses 
A0003 safefesf 
A0004 vsdrdsrfgsd 
A0006 adfaasadsa 
A0007 sefse gdsgfd 
A0008 wafregsre grdsgr 
A0009 sdfsfs ffd 
A0010 sfesfe grgrds 
A0011 sdf fsfgdsf 
A0012 esdgf gsg 
A0013 gdrs as gsdfd 
A0014 ddsfgb gtrew asfd 
A0015 ghdssdf 
A0016 sadsaf 
A0017 sjhdhj ahumds shsh 

Мне нужен способ программно делать следующее:

  1. Дублирование каждую строку, но вставив / перед ID и Description (закрытие тег)

  2. Обертка каждой записи в <> теги

Так вот как эти данные будут выглядеть:

<A0001><esfesef fgrdgdrd> 
</A0001></esfesef fgrdgdrd> 
<A0002><fsefgeses> 
</A0002></fsefgeses> 
<A0003><safefesf> 
</A0003></safefesf> 
<A0004><vsdrdsrfgsd> 
</A0004></vsdrdsrfgsd> 
<A0006><adfaasadsa> 
</A0006></adfaasadsa> 
<A0007><sefse gdsgfd> 
</A0007></sefse gdsgfd> 
<A0008><wafregsre grdsgr> 
</A0008></wafregsre grdsgr> 
<A0009><sdfsfs ffd> 
</A0009></sdfsfs ffd> 
<A0010><sfesfe grgrds> 
</A0010></sfesfe grgrds> 
<A0011><sdf fsfgdsf> 
</A0011></sdf fsfgdsf> 
<A0012><esdgf gsg> 
</A0012></esdgf gsg> 
<A0013><gdrs as gsdfd> 
</A0013></gdrs as gsdfd> 
<A0014><ddsfgb gtrew asfd> 
</A0014></ddsfgb gtrew asfd> 
<A0015><ghdssdf> 
</A0015></ghdssdf> 
<A0016><sadsaf> 
</A0016></sadsaf> 
<A0017><sjhdhj ahumds shsh> 
</A0017></sjhdhj ahumds shsh> 

я могу поместить данные в таблицу Excel и подключить к этому через SQL Server 2008 R2 для выполнения запроса, а затем скопировать результаты из в .txt (где данные в конечном итоге должны быть сохранены).

Есть ли у кого-нибудь идеи по преобразованию этих данных, поэтому мне не нужно обновлять каждую запись в TXT-файле?

+0

Как насчет 'SELECT * ', а затем a для каждого цикла, который объединяет каждое поле с' "" ' и т.д... – Grant

ответ

1

Что вы спросили можно сделать так:

WITH CTE AS 
(
    SELECT 
    ID, 1 AS RN, '<' + ID + '><' + Name + '>' AS Tag 
    FROM Table1 
    UNION 
    SELECT 
    ID, 2 AS RN, '</' + ID + '></' + Name + '>' AS Tag 
    FROM Table1 
) 
SELECT Tag FROM CTE 
ORDER BY ID,RN 

SQLFiddle DEMO

Однако, если таковые должны быть действительными теги XML вы можете на самом деле хотите, чтобы изменить порядок тегов в закрытии строки?

WITH CTE AS 
(
    SELECT 
    ID, 1 AS RN, '<' + ID + '><' + Name + '>' AS Tag 
    FROM Table1 
    UNION 
    SELECT 
    ID, 2 AS RN, '</' + Name + '></' + ID + '>' AS Tag 
    FROM Table1 
) 
SELECT Tag FROM CTE 
ORDER BY ID,RN 

SQLFiddle DEMO

Кроме того, одна строка может также работать для вас?

SELECT '<' + ID + '><' + Name + '></' + Name + '></' + ID + '>' AS Tag FROM Table1 

SQLFiddle DEMO

1

Я не уверен, почему вы хотите идти в проблему сброса данных в Excel, а затем обрабатывать его в SQL Server, потому что вы можете сделать то же самое верно в доступе себя:

SELECT lineOut 
FROM 
(
     SELECT ID, 1 AS Seq, "<" & ID & "><" & [Name] & ">" AS lineOut 
     FROM Table1 
    UNION ALL 
     SELECT ID, 2 AS Seq, "</" & [Name] & "></" & ID & ">" AS lineOut 
     FROM Table1 
    ORDER BY 1, 2 
) 

Просто сохраните этот запрос и затем экспортируйте его в виде текстового файла. (Обратите внимание, что я поменял порядок закрытия тегов, чтобы они соответствовали должным образом.)

Смежные вопросы