正则表达式将 SQL INSERT 语句转换为键值字典
Posted
技术标签:
【中文标题】正则表达式将 SQL INSERT 语句转换为键值字典【英文标题】:Regex to convert SQL INSERT statement to dictionary of key,value 【发布时间】:2018-10-19 11:58:16 【问题描述】:我需要一个正则表达式来将 SQL INSERT 语句转换为键值字典。该值可以是一个复杂的公式。 我使用的策略是 C# 组和捕获。
例如
A->RIC_MIGRATION
B->RIC_MIGRATION
C-> AND ( ( IN ( CurrencyStr , "AUD","NZD","EUR" ) ) , AND ( 1, AND ( 1, AND ( ( FeedToPXE2 = "1") , ( RIC_CRED_ValueSource = "1 ") , ( FeedToPXE1 = "0") , ( IN (InsType , "A","C","T" ) ) , )) , ) , )
我已经尝试了以下
var insertRegex = @"INSERT INTO (?[A-Z_]*)\(((?[""A-Za-z_]+),?)*\) VALUES\(((?'[^']+ '),?)*\)"; var inputString=@"INSERT INTO TABLEA(A,""B"",C,D,E,F,G,H,I,J,K,L,M) VALUES('RIC_MIGRATION','RIC_MIGRATION',' AND ( ( IN ( CurrencyStr , ""AUD"",""NZD"",""EUR"" ) ) , AND ( 1, AND ( 1, AND ( ( FeedToPXE2 = ""1"") , ( RIC_CRED_ValueSource = ""1"") , ( FeedToPXE1 = ""0"") , ( IN (InsType , ""A"",""C"",""T"" ) , )) , ) , )', '','','EUR.CM_INSTRUMENT.REFDATA.INSTRUMENTGROUP_PXECRED_RIC_MIGRATION','1','1','0','','','0','No')"; var regMatch = Regex.Match(inputString, insertRegex);但它不匹配。
我做错了什么?
感谢观看
【问题讨论】:
您使用的正则表达式对我来说看起来既复杂又可怕。您是否有机会直接转储 SQL 数据并从例如平面文件构建字典? 我在你的正则表达式中闻到语法错误。 发现错误。正确的正则表达式是 var insertRegex = @"INSERT INTO (?正确的正则表达式是
var insertRegex = @"INSERT INTO (?[A-Z_]*)\(((?[""A-Za-z_]+),?)*\) 值\(((?'[^']* '),?)*\)";处理空字符串值''
【讨论】:
以上是关于正则表达式将 SQL INSERT 语句转换为键值字典的主要内容,如果未能解决你的问题,请参考以下文章
将 json 格式的键值对转换为以符号为键的 ruby 哈希的最佳方法是啥?
将 json 字典列转换为键值对行(Redshift+Postgresql)