Имейте веб-форму, в которой есть кнопка загрузки для загрузки файла csv, тогда мой код должен проанализировать файл и использовать проанализированные данные для вставки в таблицу SQL. Это то, что я делаю правильно для данных синтаксического анализа в List, это не подбирает имя файла для streamreader. Является ли это наиболее эффективным способом анализа данных? Должен ли я анализировать данные?Загрузить файл csv, проанализировать, затем перевести данные в таблицу SQL
protected void UploadBtn_Click(object sender, EventArgs e)
{
if (FileUpload.HasFile)
{
string filename = Path.GetFileName(FileUpload.FileName);
List<string[]> ValuesToUpload = parseData(filename);
//if (!Directory.Exists(ConfigurationManager.AppSettings["temp_dir"].ToString().Trim()))
//{
// Directory.CreateDirectory(ConfigurationManager.AppSettings["temp_dir"].ToString().Trim());
//}
//FileUpload.SaveAs(ConfigurationManager.AppSettings["temp_dir"].ToString().Trim() + filename);
//using (FileStream stream = new FileStream(ConfigurationManager.AppSettings["temp_dir"].ToString().Trim() + filename, FileMode.Open, FileAccess.Read, FileShare.Read))
}
}
public List<string[]> parseData(filename)
{
int j=0;
List <string[]> members = new List<string[]>();
try
{
using (StreamReader read = new StreamReader(filename))
{
while (!read.EndOfStream)
{
string line = read.ReadLine();
string[] values = line.Split(',');
if(j==0)
{
j++;
continue;
}
long memnbr = Convert.ToInt64(values[0]);
int loannbr = Convert.ToInt32(values[1]);
int propval = Convert.ToInt32(values[2]);
members.Add(values);
}
CsvReader от codeproject? –
Кажется довольно эффективным для меня, по крайней мере, в отношении производительности, может быть, не с точки зрения строк кода, но я лично склонен это делать. Я не собираюсь добавлять зависимость (например, предложенную выше), если она не будет широко использоваться во всем приложении. – evanmcdonnal
Если много данных, вы можете сделать массовую вставку в промежуточную таблицу, а затем выполнить хранимую процедуру для анализа/номизации данных в фактических таблицах. – Dennis