我有一个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
我需要一种以编程方式执行以下操作的方法:
复制每一行,但在ID和描述(结束标记)之前插入/
包装<>
代码
这就是数据的外观:
<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 :(得分: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 :(得分: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
)
只需保存该查询,然后将其导出为文本文件。 (请注意,我交换了结束标记的顺序,以使它们正确匹配。)