我有一个带有长 sql 查询的随机 .sql 文件。我需要运行时从插入 sql 语句中获取所有表名以放入数组中。如果插入语句在(一行)中,我可以获取表名(Inventory.tableA),如下所示:
...
Insert into Inventory.tableA;
...
但是,如果插入语句在多行中,如下所示
Insert into
Inventory.tableA;
或者
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();
}