Member 11572140 Ответов: 1

Динамический импорт записей из excel в базу данных


В моем приложении у меня есть более 160 полей, я хочу, чтобы пользователь мог выбрать несколько полей, а затем он может импортировать данные из excel в базу данных.
Как я могу добиться того же, что и я не хочу создавать процедуру со 160 параметрами, а затем управлять преобразованием в хранимых процедурах.

Есть ли какой-то динамический способ сделать это? С помощью которого я могу управлять вещами, не давая 160 параметров.

Что я уже пробовал:

Решение, которое я могу придумать, состоит в том, чтобы создать процедуру со 160 параметрами и иметь 1 таблицу, которая будет отображать параметры и столбец excel, а затем вставлять данные в базу данных.

PeejayAdams

Я бы задал себе следующие вопросы:

1) Действительно ли Excel является инструментом для этой работы? Если да, то вам нужно будет изучить SSIS как способ экспорта из Excel в SQLServer. Он не будет динамичным, но вы можете автоматизировать экспорт сохраненных электронных таблиц. Не совсем ясно, каковы ваши требования, но если вы пытаетесь позволить кому-то поддерживать данные, гораздо лучше сделать это с помощью приложения на основе форм, где у вас есть контроль над проверкой и т. д.

2) вы действительно хотите, чтобы пользователи сами решали, какие поля будут экспортироваться? (Подсказка: ответ, который вы ищете, - это очень твердое "нет!")

3) Нужно ли обновлять все 160 столбцов в одной процедуре? Я очень надеюсь, что в вашей базе данных нет таблицы столбцов 160+. Если это так, перепишите его/получите его переписанным, прежде чем идти дальше.

ZurdoDev

Sql может анализировать json и xml, так что вы всегда можете пойти по этому пути.

1 Ответов

Рейтинг:
0

Beginner Luck

Office импортирует данные электронных таблиц Excel в таблицу Sql Server с помощью C# и vb.net пример в C#, VB.NET, SQL для Visual Studio 2013[^] пример кода и проекта

используя системы.Данных.Для oledb;
используя системы.Данных.Поставщики sqlclient;


public void ImportDataFromExcel(string excelFilePath)
{
// declare variables - редактируйте их в зависимости от вашей конкретной ситуации
строка ssqltable = " Table1";
// убедитесь, что ваше имя листа правильно, здесь имя листа-sheet1, так что вы можете изменить свое имя листа, если у вас есть другое
string myexceldataquery = " select student, rollno, course from [Sheet1$]";
пробовать
{
// создайте наши строки подключения
строки sexcelconnectionstring = @"поставщика=Майкрософт.джет.oledb для.4.0;Источник данных=" + excelFilePath +
"; расширенные свойства= " + "\ " excel 8.0;hdr=да;\"";
строка ssqlconnectionstring = " источник данных=SAYYED;начальный каталог=SyncDB;Интегрированная безопасность=True";
// выполнить запрос, чтобы стереть все предыдущие данные из нашей целевой таблицы
строка sclearsql = "удалить из" + ssqltable;
SqlConnection sqlconn = new SqlConnection(ssqlconnectionstring);
SqlCommand sqlcmd = new SqlCommand(sclearsql, sqlconn);
sqlconn.Открыть();
sqlcmd.Метод executenonquery();
sqlconn.Закрывать();
// серия команд для массового копирования данных из файла excel в нашу таблицу sql
Метод oledbconnection oledbconn = новый объект oledbconnection(sexcelconnectionstring);
OleDbCommand oledbcmd = new OleDbCommand(myexceldataquery, oledbconn);
оледбконн.Открыть();
И oledbdatareader др = oledbcmd.Метода executereader();
SqlBulkCopy bulkcopy = new SqlBulkCopy(ssqlconnectionstring);
переборка.DestinationTableName = ssqltable;
в то время как (dr. Read())
{
переборка.WriteToServer(dr);
}
др.Рядом();
оледбконн.Закрывать();
Этикетка 1.Text = " файл, импортированный в sql server.";
}
поймать (исключение бывший)
{
//обработать исключение
}
}