我有一个随机的.sql文件与长的sql查询。我需要运行时从insert sql语句中获取所有表名以放入数组中。我能够得到表名(Inventory.tableA)出来,如果插入语句是(一行),如以下格式:匹配不同字符串格式的字符串
...
Insert into Inventory.tableA;
...
但是,如果INSERT语句是多行像下面例如
Insert into
Inventory.tableA;
OR
Insert into
(blank line)
(blank line)
Inventory.tableA;
然后我的查询检索表名称将失败。你能否告诉我如何从长的sql查询中得到表名,插入语句可以是一行还是多行?这里最好的方法是什么?
下面是我试过的可以处理1行的c#查询。
public List<string> GetAllTablesNames(string sp)
{
List<string> output = new List<string>();
string[] contentSplit = sp.Split(new string[] { "INSERT INTO " }, StringSplitOptions.None);
for (int a = 1; a < contentSplit.Length; a++)
{
string[] sa_tableName = contentSplit[a].Substring(0, contentSplit[a].IndexOf("\r")).Trim().Split('.');
output.Add(sa_tableName[0] + "." + sa_tableName[1]);
}
return output.Distinct().ToList();
}
请向我们展示在单行上起作用的查询,并使您的问题标题更有意义。 –
'Insert into Inventory.tableA'本身就是错的,它不能按原样执行。包括换行符在内的空格将被忽略,因此导致错误的可能性不大。也许你正在单独阅读和执行每一行? –