Re[5]: из EXcel в SQL
От: Closer  
Дата: 03.04.06 06:03
Оценка:
Здравствуйте, Снигирев, Вы писали:

С>Мне нужно написать программу, что бы пользователи могли сами в таблицу (которая записана в SQL) импортировать данные из Ecxel.


Понятно. Я делал подобную утилиту на C#.
В самом простом случае этот процесс состоит из след. шагов:
1) Считать данные из Excel файла
2) Обработать их (если нужно)
3) Сформировать INSERT-ы для добавления данных в БД

Считать данные из Excel можно примерно так:

            OleDbConnection oConnection = new OleDbConnection(m_sExcelConnectinString);
            oConnection.Open();
            try
            {
                string sSQL = "SELECT * FROM [{0}$]";
                sSQL = string.Format(sSQL, p_sSheetName);
                OleDbCommand oCommand = new OleDbCommand(sSQL);
                oCommand.Connection = oConnection;
                OleDbDataAdapter da = new OleDbDataAdapter(oCommand);
                DataTable dt = new DataTable();
                da.Fill(dt);
                dt.TableName = p_sEntityName;
                return dt;
            }
            finally
            {
                oConnection.Close();
            }


Насчёт обработки хочу сказать что там нужно сделать проверку данных на возможность вставки в БД. Если какую либо запись вставить не возможно то её нужно запомнить и по оканчанию импорта на основании списка из таких записей сформировать новый Excel-ий файл с описанием проблемы для каждой записи (т.е. почему она не может быть проимпортирована)

INSERT-ы формируешь так как тебе надо.

P.S.
При использовании такого подхода который описан выше возникает одна небольшая проблема — скорось импорта данных не слишком высокая. С этим можно жить если импорт происходит не часто. Однако если скорость всё же важна, то увеличить её можно используя DTS (о котором я упоминал) тогда тебе прийдётся формировать схему импорта в программе, а не в самом Enterprise Manager.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Мы были здесь. Но пора идти дальше. (с) Дуглас Коупленд, Рабы "Микрософт"
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.