Мне нужно разработать ETL с использованием C #, который извлекает таблицу из базы данных MSSQL, преобразует указанную таблицу в формат .parquet и сохраняет ее в определенном месте. Я использую пакет Parquet.Net и .Net4.5.
Я получил код для работы с одной таблицей, но мне нужно, чтобы он действовал больше как функция. Там, где вам нужно будет только обновить базу данных и имя таблицы, и она автоматически создаст требуемый класс, создаст объект Enumerable и напишет паркет.
//Create required class
public class SimpleStructure
{
public int ID { get; set; }
public string Text { get; set; }
}
//Import SQL table
var table = new DataTable();
using (var da = new SqlDataAdapter("SELECT * FROM x", "Data Source=(x);Database=Test;" + "Integrated Security=x;"))
{da.Fill(table);}
//Create Enumerable Object
var results = from row in table.AsEnumerable()
select new SimpleStructure
{
ID = row.Field<int>("ID"),
Text = row.Field<string>("Text")
};
//Write .parquet
using (Stream stream = File.OpenWrite("C:\\"))
{
ParquetConvert.Serialize(results.ToArray(), stream);
}
Мне нужно выяснить, как динамически создавать классы и перечислять объекты, так как этот сценарий нужно будет применить к сотням таблиц. Любые указатели были бы полезны, так как я довольно неопытен с C #.