Прочитать файл CSV и вставить в LocalDB (asp.net MVC) - PullRequest
0 голосов
/ 14 февраля 2019

Я пробую проект с ASP.Net MVC и у меня есть большой CSV-файл, который я хочу сохранить в LocalDB.

Я следовал этому уроку (и те, что были до этого, оMVC): https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/introduction/creating-a-connection-string

Теперь я хочу добавить данные в эту базу данных, которую я настроил, и я хотел бы прочитать эти данные из файла CSV, а затем сохранить их в моей базе данных.

Я пробовал это: https://www.aspsnippets.com/Articles/Upload-Read-and-Display-CSV-file-Text-File-data-in-ASPNet-MVC.aspx, но когда я пытаюсь загрузить свой файл, я получаю сообщение об ошибке, что мой файл слишком велик?

Мне бы понравилось, если бы это могло бытьавтоматизированный, чтобы при запуске приложения база данных была заполнена данными из моего CSV-файла (и, если он уже заполнен, он не будет делать это снова) или просто каким-либо способом кодирования, чтобы я мог добавить данные из моего CSV-файла.файл в базу данных (LocalDB).

    protected override void Seed(ProductsDBContext context)
    {
        Assembly assembly = Assembly.GetExecutingAssembly();
        string resourceName = "WebbApplication.App_Data.SeedData.price_detail.csv";
        using (Stream stream = assembly.GetManifestResourceStream(resourceName))
        {
            using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
            {
                CsvReader csvReader = new CsvReader(reader);
                var products = csvReader.GetRecords<PriceDetail>().ToArray();
                context.PriceDetails.AddOrUpdate(c => c.PriceValueId, products);
            }
        }
    }

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

С Cinchoo ETL - библиотекой с открытым исходным кодом, вы можете массово загрузить CSV-файл в sqlserver с несколькими строками кода.

using (var p = new ChoCSVReader(** YOUR CSV FILE **)
     .WithFirstLineHeader()
    )
{
    p.Bcp("** ConnectionString **", "** tablename **");
}

Для получения дополнительной информации посетите статью codeproject.

Надеюсь, это поможет.

0 голосов
/ 14 февраля 2019

Ваша вторая ссылка содержит следующую строку:

string csvData = System.IO.File.ReadAllText(filePath);

Если вы получаете исключение «Недостаточно памяти», вам не следует загружать весь файл сразу в память, т. Е. Не читать всеtext.

StreamReader имеет встроенную функцию для этого.

System.IO.StreamReader file = new System.IO.StreamReader("WebbApplication.App_Data.SeedData.price_detail.csv"); 
while((line = file.ReadLine()) != null)  
{  
    System.Console.WriteLine(line);
    //Replace with your operation below
}

Потенциально та же проблема решена в этом вопросе .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...