С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 11.05.2017
Сообщений: 2
1

Как можно осуществить проверку данных перед импортом (Excel -> MS SQL)

11.05.2017, 17:55. Показов 944. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Суть проблемы: при импорте данных из Excel в MS SQL возникла надобность проверки вносимых данных в таблицу SQL. Как лучше всего реализовать проверку данных DataTable? Код контроллера представлен ниже:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Data.OleDb;
using System.IO;
 
namespace TechR.Controllers
{
    public class HomeController : Controller
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con"].ConnectionString);
        OleDbConnection Econ;
 
        public ActionResult Index()
        {
            return View();
        }
        [HttpPost]
        public ActionResult Index(HttpPostedFileBase file)
        {
            string filename = Guid.NewGuid() + Path.GetExtension(file.FileName);
            string filepath = "/Excel_Folder/" + filename;
            file.SaveAs(Path.Combine(Server.MapPath("/Excel_Folder"), filename));
            InsertExcelData(filepath, filename);
            return View();
        }
 
        private void ExcelConn(string filepath)
        {
            string constr = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 13.0 Xml;HDR=YES;""", filepath);
            Econ = new OleDbConnection(constr);
        }
 
        private void InsertExcelData(string fileepath, string filename)
        {
            string fullpath = Server.MapPath("/Excel_Folder") + filename;
            ExcelConn(fullpath);
            string query = string.Format("Select * from [{0}]", "Sheet1$");
            OleDbCommand Ecom = new OleDbCommand(query, Econ);
            Econ.Open();
 
            DataSet ds = new DataSet();
            OleDbDataAdapter oda = new OleDbDataAdapter(query, Econ);
            Econ.Close();
            oda.Fill(ds);
 
            DataTable dt = ds.Tables[0];          
 
            SqlBulkCopy objbulk = new SqlBulkCopy(con);
            objbulk.DestinationTableName = "TRCES";
            objbulk.ColumnMappings.Add("Login", "Login");
            objbulk.ColumnMappings.Add("TR", "TR");
            objbulk.ColumnMappings.Add("Date", "Date");
            con.Open();
            objbulk.WriteToServer(dt);
            con.Close();
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2017, 17:55
Ответы с готовыми решениями:

Отсортировать Excel от я до а по столбу из Access средствами VBA перед импортом
Доброго времени суток. Возникла проблемка. Необходимо сделать сортировку в Excel перед его...

Как можно осуществить проверку результата ввода
Помогите написать скрипт по генерации 2 случайных чисел (например 24 и 8), выводу арифметической...

Как осуществить проверку введенных данных?
Нужно число из 10 системы перевести в 2 систему.Допустим, в Label1 выводится число в 10 системе,а в...

Помогите с импортом данных из Excel
Мне требуется импортировать в проект на Delphi лист NS Excel и работать с ним как с базай данных...

3
Эксперт .NET
12512 / 8698 / 1311
Регистрация: 21.01.2016
Сообщений: 32,675
12.05.2017, 11:01 2
0lvl, что значит "как"? Это вам должно быть виднее что и как вы хотите проверить. Перебирайте строки в полученной DataTable и проверяйте по своим правилам...
0
0 / 0 / 0
Регистрация: 11.05.2017
Сообщений: 2
12.05.2017, 19:31  [ТС] 3
что значит "как"? Это вам должно быть виднее что и как вы хотите проверить. Перебирайте строки в полученной DataTable и проверяйте по своим правилам...
Перебор всех строк самый крайний вариант, т.к. возможны файлы с большим кол-вом данных. В самой теме вопрос стоял: "Лучше всего реализовать" потому как пока дельных идей не пришло.
А правила (как в примере кода), что 1-й столбец "string", 2-й "int", 3-й "datetime".
0
Эксперт .NET
12512 / 8698 / 1311
Регистрация: 21.01.2016
Сообщений: 32,675
13.05.2017, 04:10 4
Цитата Сообщение от 0lvl Посмотреть сообщение
пока дельных идей не пришло.
Так и вопрос внятно не прозвучал))

От размера таблицы необходимость проверки (как я понял это и есть правило валидации) не отпадает. Если записей совсем уж много, то можно в несколько потоков их проверять.
0
13.05.2017, 04:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2017, 04:10
Помогаю со студенческими работами здесь

В тупике с импортом данных с BDGrid в Excel
Проблема в том что файл Excel находиться в папке с программой когда указываю полный путь (пример,...

Возникли трудности с импортом данных из excel в cxgrid
Помогите с вопросом связанным с cxgrid. Есть грид с датасетом и 6 колонками. Регион, Объект,...

Как можно осуществить репликацию между офисной БД (MS SQL Server) и БД в Интернете (MS SQL Server) ?
Подскажите пожалуйста, как можно осуществить репликацию между офисной БД (MS SQL Server) и БД в...

Скажите, как можно осуществить подсчет строк в Excel?
Прилагаю файлы для разъяснения того, что мне надо.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru