簡體   English   中英

轉換從SQL Server 2008 R2中的Access獲取的數據

[英]Transforming data taken from Access in SQL Server 2008 R2

我有一個包含兩列的Access表:[ID]和[Name]。 這里有超過3000行的數據。 目前,我已經將表格復制並粘貼到一個.txt文件中,該文件需要存放在該文件中。

數據外觀示例:

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文件中的每個記錄?

您的要求可以這樣完成:

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演示

但是,如果這些是有效的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演示

另外,單行也可能適合您?

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

SQLFiddle演示

我不確定為什么要麻煩將數據轉儲到Excel,然后在SQL Server中進行處理,因為您可以在Access本身中做同樣的事情:

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
)

只需保存該查詢,然后將其導出為文本文件即可。 (請注意,我交換了結束標記的順序以使其正確匹配。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM