У меня есть текстовый файл:
LoginId; No_Intervenant
EF2KBT0; 1003820030
ENHD0KE; 1003820129
E9PM7EP; 1003820153
EFT10OO; 1003820218
Мне нужно создать другой текстовый файл, содержащий скрипт SQL UPDATE из этой информации, такой как:
UPDATE Contact
Set
Contact.No_Intervenant = '1003820030'
where
ISNULL (Contact.LoginId, '') = 'ER7OZXZ';
Я получил только эторезультат с использованием метода Stringbuilder
, но с использованием жесткого кода.Я хотел бы, чтобы заголовок добавлялся автоматически.
public Form1()
{
InitializeComponent();
}
private static void AddSqlCommand(StringBuilder sql, string[] columns, string[] types, string[] values)
{
sql.AppendLine("UPDATE Contact");
sql.AppendLine("SET");
//skip LoginId columns
for (int i = 1; i < columns.Length; i++)
{
switch (types[i].Trim())
{
case "int":
sql.Append($" Contact.{columns[i].Trim()} = {values[i]}");
//sql.Append($" Contact.{columns[0].TrimStart() } = {values[i]}");
break;
default:
sql.Append($" Contact.No_Intervenant = '{values[i]}'");
break;
}
if (columns.Length > 1 && i != columns.Length - 1)
{
sql.Append(",");
}
sql.AppendLine();
}
sql.AppendLine("WHERE");
sql.AppendLine($" ISNULL(Contact.LoginId, '') = '{values[0]}';");
sql.AppendLine();
}
private static StringBuilder GenerateSqlScript(string[] fileContent)
{
var sqlCommand = new StringBuilder();
string[] types = fileContent[0].Split(';');
string[] columns = fileContent[1].Split(';');
//skip the first line (header)
for (int i = 2; i < fileContent.Length; i++)
{
string[] values = fileContent[i].Split(';');
if (values.Length >= 1)
{
AddSqlCommand(sqlCommand, columns, types, values);
}
}
return sqlCommand;
}
Как я могу автоматически получить и добавить заголовок?Потому что мне, вероятно, придется сделать это для более длинных файлов, с большим количеством столбцов и большим количеством строк обновления для других файлов, и я не хотел бы жестко кодировать все заголовки файлов, как в примере, который я должен сделать далее:
Заголовок:
No_Intervenant; First_Name; Last_Name; Role_SE; EMail; Телефон; Расширение; Statut; Адрес_1; Address_2; Zip; CPF; Inscription_Particulier; DHM_Stat_Part; Date_via_Curl*
Данные:
1003820030; NOEL; SANTOS; Particulier ;;;; Actif; 1528 STREET; VAL-D''OR CA; AAA 5T9; 123456789; Actif ;;2016-07-19 09: 49: 43; 2019-02-08 14: 24: 19;