Здравствуйте, Снигирев, Вы писали:
С>Здравствуюте помогите. Нужно перенести данные из таблицы EXcel в SQL. Подскажите на примере.
Если ты используешь M$ SQL то прочитай про DTS (Data Transformation Services) здесь. После этого вся операция по переносу данных займёт несколько минут, с использованием стандатрных средств MS SQL.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Мы были здесь. Но пора идти дальше. (с) Дуглас Коупленд, Рабы "Микрософт"
Здравствуйте, Снигирев, Вы писали:
С>Здравствуюте помогите. Нужно перенести данные из таблицы EXcel в SQL. Подскажите на примере.
Я так понимаю вы хотите из Exel файла сделать table insert?
Я в Oracle использую SQL*Loader. Утилита позволяет вставлять данные сразу в таблицы + форматировать их при этом.
Если БД другая, то не знаю
PS: из .xls файла всегда можно сделать txt c разделителями и наваять на С программку, которая будет добавлять преобразования всез типов и составлять команды SQL, ИМХО проще и лучше пользоваться утилитами типа SQL*Loader.
Здравствуйте, Снигирев, Вы писали:
С>мне нужно что бы сам пользователь, который не знает SQL через ADO импортировал список в SQL. так воообще можно
"который не знает SQL через ADO импортировал список в SQL" ээээ... а что есть такие пользователи???? Которые знают ADO, но не знают SQL да ещё и код писать умеют
Опиши как ты себе представляешь процедуру импорта плз.
Ты хочешь найти уже готовую утилиту которая бы это делала? Или хочешь написать свою?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Мы были здесь. Но пора идти дальше. (с) Дуглас Коупленд, Рабы "Микрософт"
Здравствуйте, Снигирев, Вы писали:
С>мне нужно что бы сам пользователь, который не знает SQL через ADO импортировал список в SQL. так воообще можно
НАсколько я понимаю, нужно просто сформировать строку вида "insert into Attain (ID, DESCRIPT) values(4, 'четыре')" имея значения "4 | четыре" так (| — здесь разделитель)?
Берём файл и парсим его построчно, составляя SQL инструкции.
что-то на эту тему видел здесь
Здравствуйте, Снигирев, Вы писали:
С>Мне нужно написать программу, что бы пользователи могли сами в таблицу (которая записана в 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>>
Мы были здесь. Но пора идти дальше. (с) Дуглас Коупленд, Рабы "Микрософт"