В C# должно быть выполнено все следующее. Разбор таблицы SQL (SQL Server) будет выполнен с использованием методов в System.Data.Odbc
.Чтение из файлов и разбор таблицы SQL
Предположим, у меня есть два CSV-файла, fi1
и fi2
. Первый файл csv имеет два столбца id
и val1
, а второй csv также имеет два столбца: id
и val2
.
Я хотел бы прочитать эти два файла и проанализировать вывод в одной таблице SQL со следующими столбцами: id, val1, val2
.
Проблема заключается в том, что оба файла может иметь различные записи в id
столбцах: других словах, некоторые идентификаторы могут иметь значение val1
но не val2
значения, и наоборот, или они могут иметь оба значения.
Таблица должна содержать объединение столбцов id
в двух файлах.
Пример:
Файл 1
File2
Как я хотел бы, чтобы окончательный SQL таблицы, чтобы выглядеть так:
Обратите внимание, что каждый файл может содержать дубликаты, и мы хотели бы, чтобы исключить дубликаты при анализе таблицы SQL.
мысль у меня была заключается в создании двух словарей, dict1
и dict2
, где ключ оказался бы id
, а значение будет val1
и val2
. Словари будет использоваться, чтобы убедиться, что дубликаты не включены:
Dictionary<string, string> dict1 = new Dictionary<string, string>();
string[] header1 = new string[]{};
using (StreamReader rdr = new StreamReader(fi1))
{
header1 = rdr.ReadLine().Split(',');
while (!rdr.EndOfStream)
{
string ln = rdr.ReadLine();
string[] split_ln = ln.Split(',');
dict1.Add(split_ln[0], split_ln[1]);
}
}
Dictionary<string, string> dict2 = new Dictionary<string, string>();
string[] header2 = new string[]{};
using (StreamReader rdr = new StreamReader(fi2))
{
header2 = rdr.ReadLine().Split(',');
while (!rdr.EndOfStream)
{
string ln = rdr.ReadLine();
string[] split_ln = ln.Split(',');
dict2.Add(split_ln[0], split_ln[1]);
}
}
Однако после добавления каждого файла словаря, я не знаю, как соответствовать идентификаторы обоих словарей.
У кого-нибудь есть хороший намек относительно того, как справиться с этой проблемой?
Почему кто-нибудь голосует, чтобы закрыть этот пост? Он имеет как воспроизводимый пример, так и показывает, что я пробовал. Я не уверен, в чем проблема. – Mayou
Вы можете использовать linq –
Не совсем, я никогда не использовал Кортеж. Не могли бы вы рассказать мне, как вы предлагаете использовать его? Благодаря! – Mayou