nira.parmar Ответов: 6

Загрузите Excel с 6500 строками в таблицу базы данных MSSQL


Привет,

Я хочу реализовать функцию загрузки файла excel в таблицу базы данных , но файл excel должен содержать 65 тысяч строк и 40 столбцов.
так что, пожалуйста, скажите мне лучший/оптимальный способ сделать эту функциональность.

Nelek

Не совсем понятно, не могли бы вы использовать виджет "улучшить вопрос" и объяснить лучше?

phil.o

Что такое лакх ?

phil.o

Хорошо, лакх-это миллион записей в Excel. Я никогда не думал, что МС придумали свои собственные слова для количеств. Спасибо :)

Luc Pattyn

На самом деле Лах-это индийское слово, означающее "сто тысяч".

ссылка

6 Ответов

Рейтинг:
6

sp_suresh

Команда массовое копирование возможно только ради этого ...
ссылка
Передача Данных С Помощью SqlBulkCopy[^]


Рейтинг:
29

sp_suresh

Если новая версия excel поддерживает более 65000 строк для экспорта, то вы можете

OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\testing.xlsx;Extended Properties='Excel 12.0 Xml;HDR=Yes;IMEX=1;'");
        OleDbCommand cmd = new OleDbCommand("select * from [Sheet1$]");
        if (conn.State == System.Data.ConnectionState.Open)
        {
            conn.Close();
        }
        conn.Open();
        OleDbDataAdapter adap = new OleDbDataAdapter(cmd);
        DataSet ds = new DataSet();
        adap.Fill(ds);
        this.GridView1.DataSource = ds.Tables[0].DefaultView;
        conn.Close();

другой способ


string[] array2 = Directory.GetFiles(@"D:\doc", "*.xls");
 
foreach (string name in array2)
{
    string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=YES;""";
    excelConnectionString=string.Format(excelConnectionString,name).Trim();
    
    Console.WriteLine(excelConnectionString);
    
    // Create Connection to Excel Workbook
    using (OleDbConnection connection =new OleDbConnection(excelConnectionString))
    {
        OleDbCommand command = new OleDbCommand("Select Field1,Field2,Field3 FROM [Sheet1$]", connection);
    
        connection.Open();
        
        // Create DbDataReader to Data Worksheet
        using (DbDataReader dr = command.ExecuteReader())
        {
            // SQL Server Connection String
            string sqlConnectionString = @"Data Source=Machine007\SQLEXPRESS;Initial Catalog=BankDB;Integrated Security=True";
    
            // Bulk Copy to SQL Server
            using (SqlBulkCopy bulkCopy =
                    new SqlBulkCopy(sqlConnectionString))
            {
                bulkCopy.DestinationTableName = "BankCodes";
                bulkCopy.WriteToServer(dr);
            }
        }
    }
 
}


nira.parmar

Привет, спасибо за ваше предложение, но я хочу загрузить миллионы записей в базу данных.
Пожалуйста, скажите оптимальный способ?

Herman<T>.Instance

используйте BCP

nira.parmar

КПК?

Herman<T>.Instance

Утилита, массовое копирование. Может быть вызван через хранимые процедуры и через C#

nira.parmar

пожалуйста, скажите мне, как использовать его в c# для импорта файла excel в базу данных

nira.parmar

Привет друг,
Когда я загружаю файл .mdb, имеющий 900000 строк, он выбрасывает
ошибка:"тайм-аут истек. Время ожидания истекло до завершения операции или сервер не отвечает." Пожалуйста, скажите мне решение, которое я застрял. Если есть какое-то оптимальное решение для импорта этих огромных записей на сервер MSsql, то, пожалуйста, скажите мне?

Рейтинг:
2

Hem Raj Thakur

http://hemgoogali.wordpress.com/2012/10/19/import-excel-to-sqlserver2005/[^]


Пожалуйста, выполните этот шаг. Откройте снимки. Это поможет вам, но это работает вручную.


Рейтинг:
2
Рейтинг:
2

arbaaz jalil

SqlBulkCopy, вероятно, является лучшим решением вашей проблемы.
Вы найдете множество учебников по

SqlBulkCopy
[^]


arbaaz jalil

обновлена ссылка

Рейтинг:
0

Anh Nguyen Trong

Я думаю, что использование должно использовать миллион вместо лакхов. :)

Я предлагаю вам взглянуть на SQL Server Express. Миллион не говорит много, миллион с одним полем (столбцом) - это одно, миллион со 100 полями-другое. Вы должны иметь возможность напрямую подключаться к Excel.

Я бы не рекомендовал excel vba. Я думаю, что предел - это миллион записей в excel (2013- 100 миллионов строк)