【发布时间】:2023-01-08 08:58:19
【问题描述】:
我想从 TXT/FLAT 文件中读取数据,并使用第一列内容作为列名和分号后的数据作为记录来排列数据。
样本数据
{1:F01SBZAZAJJXXXX9999999999}{2:I940SBICMWMXXXXXN}{4:
:20:D424A100110011E4
:25:020083203
:28C:49/1
:60F:C140106ZAR1029873,62
:61:1401060106DR5000,NTRF99999999//NONREF20140106-13175-016050001844421
:86:/PREF/ZA000520CATS THIRD PARTY PAYMENT
:62F:C140106ZAR0,00
-}
{1:F01SBZAZAJJXXXX9999999999}{2:I940SBICMWMXXXXXN}{4:
:20:D3DE7040110011E4
:25:020083204
:28C:51/1
:60F:C140106NAD1030073,
:61:1401060106DR5000,NTRF20140106-13175-0//NONREF20140106-13175-016050001844421
:86:/PREF/NA000520TRANSFER
:62F:C140106NAD0,00
-}
下面的查询只适用于一个块...我需要一个查询来读取整个数据集并按照上图所示进行排列。
SELECT [20], [25], [28C], [60F], [61], [86], [62F]
FROM
(SELECT column2, column3 FROM [dbo].[Sample MT940]) AS Source_Table
PIVOT
(MAX(column3)
FOR
column2 in ([20], [25], [28C], [60F], [61], [86], [62F])
) AS PIVOT_TABLE
预期成绩
【问题讨论】:
-
我从 txt 文件导入数据,结果如 SAMPLE DATA 部分所示
-
GO CREATE TABLE [dbo].[Sample_MT940]( [column1] [nvarchar](100) NOT NULL ) ON [PRIMARY] GO GO INSERT INTO [dbo].[Sample_MT940] ([column1]) VALUES (<column1, nvarchar( 100),>) 开始
-
SQL 可能不是这项工作的最佳工具。
-
@DavidBrowne-Microsoft 您想要什么工具?
-
要么是某种理解该文件格式的工具,要么是具有更好文本解析能力的过程编程语言,如 python、C# 等。
标签: sql-server external-tables charindex string-function