1

我有一个 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 和描述(结束标签)之前插入一个

  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 文件中的每条记录?

4

2 回答 2

1

我不确定你为什么要麻烦将数据转储到 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
)

只需保存该查询,然后将其导出为文本文件。(请注意,我交换了结束标签的顺序以使它们正确匹配。)

于 2013-06-12T12:14:07.323 回答
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 演示

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

于 2013-06-12T11:21:12.900 回答