из EXcel в SQL
От: Снигирев  
Дата: 03.04.06 04:28
Оценка:
Здравствуюте помогите. Нужно перенести данные из таблицы EXcel в SQL. Подскажите на примере.
Re: из EXcel в SQL
От: Closer  
Дата: 03.04.06 05:08
Оценка:
Здравствуйте, Снигирев, Вы писали:

С>Здравствуюте помогите. Нужно перенести данные из таблицы EXcel в SQL. Подскажите на примере.


Если ты используешь M$ SQL то прочитай про DTS (Data Transformation Services) здесь. После этого вся операция по переносу данных займёт несколько минут, с использованием стандатрных средств MS SQL.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Мы были здесь. Но пора идти дальше. (с) Дуглас Коупленд, Рабы "Микрософт"
Re[2]: из EXcel в SQL
От: Снигирев  
Дата: 03.04.06 05:16
Оценка:
мне нужно что бы сам пользователь, который не знает SQL через ADO импортировал список в SQL. так воообще можно
Re: из EXcel в SQL
От: andrey.def Россия  
Дата: 03.04.06 05:16
Оценка:
Здравствуйте, Снигирев, Вы писали:

С>Здравствуюте помогите. Нужно перенести данные из таблицы EXcel в SQL. Подскажите на примере.


Я так понимаю вы хотите из Exel файла сделать table insert?
Я в Oracle использую SQL*Loader. Утилита позволяет вставлять данные сразу в таблицы + форматировать их при этом.
Если БД другая, то не знаю
PS: из .xls файла всегда можно сделать txt c разделителями и наваять на С программку, которая будет добавлять преобразования всез типов и составлять команды SQL, ИМХО проще и лучше пользоваться утилитами типа SQL*Loader.
Re[2]: из EXcel в SQL
От: Снигирев  
Дата: 03.04.06 05:21
Оценка:
мне нужно что бы сам пользователь, который не знает SQL через ADO импортировал список в SQL. так воообще можно
Re[3]: из EXcel в SQL
От: Closer  
Дата: 03.04.06 05:25
Оценка:
Здравствуйте, Снигирев, Вы писали:

С>мне нужно что бы сам пользователь, который не знает SQL через ADO импортировал список в SQL. так воообще можно


"который не знает SQL через ADO импортировал список в SQL" ээээ... а что есть такие пользователи???? Которые знают ADO, но не знают SQL да ещё и код писать умеют

Опиши как ты себе представляешь процедуру импорта плз.

Ты хочешь найти уже готовую утилиту которая бы это делала? Или хочешь написать свою?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Мы были здесь. Но пора идти дальше. (с) Дуглас Коупленд, Рабы "Микрософт"
Re[4]: из EXcel в SQL
От: Снигирев  
Дата: 03.04.06 05:37
Оценка:
Мне нужно написать программу, что бы пользователи могли сами в таблицу (которая записана в SQL) импортировать данные из Ecxel.
Re[3]: из EXcel в SQL
От: andrey.def Россия  
Дата: 03.04.06 05:42
Оценка:
Здравствуйте, Снигирев, Вы писали:

С>мне нужно что бы сам пользователь, который не знает SQL через ADO импортировал список в SQL. так воообще можно

НАсколько я понимаю, нужно просто сформировать строку вида "insert into Attain (ID, DESCRIPT) values(4, 'четыре')" имея значения "4 | четыре" так (| — здесь разделитель)?
Берём файл и парсим его построчно, составляя SQL инструкции.
что-то на эту тему видел здесь
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...
Пока на собственное сообщение не было ответов, его можно удалить.