ahmed_sa Ответов: 1

Как импортировать данные в SQL из таблицы данных excel с помощью C#


Проблема

Как написать код импорта таблицы данных в SQL server 2012 .

Подробности

У меня есть имя листа excel InvoiceData.xlsx есть две колонки
UnitCode    CurrentMeterReading
21544                2900
22152                9000
19822                9200

Я получаю данные об успехе из листа excel в datatable следующим образом :

public System.Data. DataTable Showdataprint()
        {

            OleDbConnection con = new OleDbConnection(connectionString);
            con.Open();   
            string str = @"SELECT  [UnitCode],[CurrentMeterReading] FROM  [Sheet1$]";
            OleDbCommand com = new OleDbCommand();
            com = new OleDbCommand(str, con);
            OleDbDataAdapter oledbda = new OleDbDataAdapter();
            oledbda = new OleDbDataAdapter(com);
            DataSet ds = new DataSet();
            ds = new DataSet();
            oledbda.Fill(ds,"[Sheet1$]");
            con.Close();
            System.Data.DataTable dt = new System.Data.DataTable();
            dt = ds.Tables["[Sheet1$]"];
            return dt;

        }

Я успешно данных из Excel в DataTable теперь мне нужно импортировать данные из объекта DataTable в SQL Server 2012 с Имя_таблицы : WahInvoice ПК : последовательный

CREATE TABLE [dbo].[WAHInvoice](
    [Serial] [int] NOT NULL,
    [Year] [int] NULL,
    [Month] [int] NULL,
    [UnitCode] [int] NULL,
    [CurrentReadingDate] [date] NULL,
    [CurrentMeterReading] [decimal](18, 2) NULL,
 CONSTRAINT [PK_WAHInvoice_1] PRIMARY KEY CLUSTERED 
(
    [Serial] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

Мне нужно знать, как импортировать данные из excel в sql .

предположим, у меня есть данные по sql в таблице WahInvoice

с max serial 2000 это означает, что данные будут выглядеть следующим образом :

Последовательный Код Блока CurrentMeterReading
2001 21544 2900
2002 22152 9000
2003 19822 9200
и все значения для оставшихся столбцов будут равны нулю .

На самом деле то что я пишу для импорта данных в sql под кнопкой импорт под кнопкой импорт нажмите я пишу следующим образом :

System.Data.DataTable dt = new System.Data.DataTable();
                    dt = Showdataprint();
//How to import datatable to sql server 2012


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

How to Import data to sql from Excel data table by c#

1 Ответов

Рейтинг:
0

Wendelius

Поскольку у вас уже есть данные в datatable, один простой способ-использовать SqlBulkCopy класс.

Взгляните на это SqlBulkCopy.Метод WriteToServer (DataTable) (System.Data.SqlClient)[^Есть хороший пример того, как записать данные на сервер с помощью этого метода.

Есть также довольно много статей об этом, например Массовая вставка в SQL из C#[^]


Maciej Los

5!

Wendelius

Спасибо :)

Srilekha Bolamoni

У меня есть данные в datatable, но я не хочу использовать sqlbulkcopy, потому что мне нужно только 6 столбцов и 20 строк . так что можете ли вы предложить какой-либо другой способ.