長い sql クエリを含むランダムな .sql ファイルがあります。配列に入れるには、insert sql ステートメントからすべてのテーブル名を実行時に取得する必要があります。以下の形式のように挿入ステートメントが (1 行) にある場合、テーブル名 (Inventory.tableA) を取得できます。
...
Insert into Inventory.tableA;
...
ただし、Insert ステートメントが以下のように複数行にある場合
Insert into
Inventory.tableA;
また
Insert into
(blank line)
(blank line)
Inventory.tableA;
次に、テーブル名を取得するクエリが失敗します。挿入ステートメントが1行または複数行の長い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();
}