1

我的任务是将旧的 Clarion(高速)应用程序转换为 MS-SQL 数据库。
我对旧应用程序的支持为零,我必须自己做所有事情。
我找不到(找到)Clarion ODBC 驱动程序,我只需要一次数据对话。当我用 TopSpeed 编辑器打开最高速度表时,我发现这样的文件结构

FILE,DRIVER('TOPSPEED'),NAME('C:\bIRA2013\BIRA_ARHIMED\ROBAGR.TPS')
ROBAGR:K_SIFGRU      KEY(+ROBAGR:SIFGRU),NOCASE,PRIMARY
ROBAGR:K_PRIHOD1_SIFGRU   KEY(+ROBAGR:PRIHOD1,+ROBAGR:SIFGRU),DUP,NOCASE
ROBAGR:K_PRIHOD2_SIFGRU   KEY(+ROBAGR:PRIHOD2,+ROBAGR:SIFGRU),DUP,NOCASE
ROBAGR:K_KUPAC_SIFGRU   KEY(+ROBAGR:KUPAC,+ROBAGR:SIFGRU),DUP,NOCASE
RECORD               RECORD
ROBAGR:SIFGRU          STRING(10)
ROBAGR:NAZIV           STRING(30)
ROBAGR:STOPA           DECIMAL(7,2)
ROBAGR:KOEF1           DECIMAL(7,4)
ROBAGR:KOEF2           DECIMAL(7,4)
ROBAGR:PRIHOD1         STRING(10)
ROBAGR:PRIHOD2         STRING(10)
ROBAGR:KUPAC           STRING(10)
ROBAGR:ID              STRING(2)
ROBAGR:D               LONG
                     END
                   END

要在 SQL 中创建新表,我需要解析此文本的列名和类型。
这是一些标准的 tex 格式,所以我可以搜索 C# 库来解析它。
INI 文件有很多 C# 库,可以轻松使用,这种格式是否看起来像任何“常见”格式,所以我可以提取它的值?
我需要在记录和第一端之间堆叠的数据。
如果我被迫手动解析此文本,我应该使用正则表达式还是其他方式?
我想用 C# 解析这些文件。

4

1 回答 1

1

如果你想使用正则表达式,你可以试试这个:

(?:RECORD|\G)\s*ROBAGR:(\S+)\s*(\S+)

正则表达式101演示

ideone演示

于 2013-09-09T21:14:39.440 回答