Импорт из Excel в Mssql посредством С++builder

Тема в разделе "SQL", создана пользователем Levi, 14 май 2007.

Статус темы:
Закрыта.
  1. Levi

    Levi Гость

    Импорт из Excel в MSSQL посредством С++builder
    Как реализовать?
     
  2. LAW

    LAW Гость

    Для доступа к Excel можно воспользоваться билдеровскими компонентом, либо создать объект через OLE. И первый и второй способы обсуждались здесь ранее. Ну а с укладкой взятых данных в MS SQL проблем быть не должно.
    Если что пиши.

    Удачи.
     
  3. Levi

    Levi Гость

    Через ОЛЕ объет это понятно, у меня другая проблема (
    Нужно информацию которая в Екселе полностью занести в готовую БД
    Строки из Екселя сгруппированы большей своей частью и поэтому не совпдают с существующими таблицами в БД, т.к. там строки разделенны на каждую таблицу отдельно (например в екселе в одно строке хранятся улица, дом, офис, а в БД улица, дом и офис это отдельные таблицы), поэтому надо как то запихнуть данные из Екселя в эти таблицы...
    Даже без помощи Билдера, просто сделать Импорт, подскажите как это реализовать?
     
  4. LAW

    LAW Гость

    Вообще, по первончальному вопросу и не скажешь.

    Разбирать строки прийдётся значит. Если есть вменяемый разделитель, например запятая или поле фиксированной длинны, то разберётся, а иначе только словарём названий городов, улиц, только тут уже 100% точности разбора не добиться.
     
  5. Levi

    Levi Гость

    Все данные импортировал в СКЛ, через встроенный в него функцию Импорт...
    Там сформировалась одна большая таблица со множеством значений...
    Как теперь разделить Строки из Екселя на отдельные составляющие (сейчас там такое творится в одной строке хранятся улица, дом, офис, и занести их в необходимые таблицы, т.к в БД улица, дом и офис это отдельные таблицы...
    Можно пример?
     
  6. Barmutik

    Barmutik Гость

    Вам же уже дал ответ на этот вопрос уважаемый LAW... сейчас вместо Экселя парсите значение поля в БД и разносите его на несколько полей в других таблицах... что конкретно у Вас вызывает проблемы ?
     
  7. Levi

    Levi Гость

    Как занести Идешники?
    Допустим значения разбросал по таблицам, как их соединить ключами?
     
  8. LAW

    LAW Гость

    Структуру связей нужно строить при анализе записей Вашей выгрузки из Excel.
     
  9. Barmutik

    Barmutik Гость

    Ну предполагается что в таблицах у Вас есть уникальные ключи .. настройте между таблицами связи.. или ручками или с помощью SQL команд...
     
  10. Levi

    Levi Гость

    Еще вопрос, у меня очень много нулевых значений получается.
    Например в Екселе хранится информация в одной ячейки:
    Должность, ФИО, индекс, город, улица, дом, офис, тел1, тел2, сот_тел, факс, е-майл, ИНН, КПП, ОГРН, ОКПК
    Так вот эти значения могут быть нулями в различном порядке: тел1, тел2, со_тел, факс, е-майл, ИНН, КПП, ОГРН.
    Получается мне все нужно будет вручную делать? Автоматически нельзя будет реализовать?
     
  11. Levi

    Levi Гость

    Функция Дата Импорт в СКЛ - > Выбо моего Ексель документа - > Предоставил мне 1 таблицу со всеми значениями, которые необходимо нужно было выбрать - > Нажал кнопку импортировать
    Что не так?
     
  12. Barmutik

    Barmutik Гость

    Судя по всему там просто все данные находятся в одном столбце и разделены сепараторами.. так что стандартный MS SQL импорт врядли поможет...
     
  13. Levi

    Levi Гость

    Barmutik
    Именно так, вот пример моей базы и самого Ексель документа...
    Что я не так делаю не пойму
    Код (Text):
    http://cp.liveofan.jino-net.ru./SQL.rar
     
  14. Barmutik

    Barmutik Гость

    Ну .. формат очень легко разбираемый .. так что писать ручками парсер и загонят ьв БД .. работы на пару часов как максимум...

    Стандартный импортировщик Вам тут не поможет...
     
  15. Barmutik

    Barmutik Гость

    Для: sax_ol

    Ещё не факт что займёт боьлше времени .. подготовка данных и тесты что бы правильно загнались или написание парсера и загон по текущим данным :) :)
     
  16. Levi

    Levi Гость

    Это операция не одноразовая (
    Я с таким не сталкивался ни разу, а препаду либо сами не знают, как делать либо просто не хотят помогать, по крайней мере, отнекиваются словами - это ваше задание и мы не можем вам ничем помочь...
    Учитывая то что они мне это задание дали сами...
    P.S.
    И почему то другим студентам из моей группы, насколько я знаю, они помогли с их задачамми по Экспроту в Ворд и Эксель из их баз ...
    Дайте наводку где искать...
    Или опишите пошагово что мне необходимо сделать..если это неоднократная операция
    Пример кода, если возможно...
     
  17. Levi

    Levi Гость

    Кстати то что у меня название таблиц и полей по русски, нормально отразится или лучше их переименовать на аглийском?
     
  18. Barmutik

    Barmutik Гость

    Ммм... а как Вы их исхитрились создать на русском в MS SQL? Насколько я в курсе это недопускается...
     
  19. Levi

    Levi Гость

    Все названия таблиц написанны на русском, это допускается...я вот боюсь не заругается ли Билдер
    или Импорт?
    Вот моя База
    Код (Text):
    http://cp.liveofan.jino-net.ru./SQL.rar
    -- старая версия
    Код (Text):
    http://cp.liveofan.jino-net.ru./SQL1.rar
    -- седня обновил ее, новая версия
     
  20. Levi

    Levi Гость

    Передаю данные из Екселя в МССКЛ:
    Код (Text):
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    ADOQuery2->SQL->Clear();
    ADOQuery2->SQL->Add("Insert into TexПер (Название_орг,Договор,Сотрудники,Адрес,Телефон,Наименование,Срок_работ,Услови
    е) values (@org,@dog,@sotrud,@adres,@tel,@naimen,@srok,@usl)");
    //AnsiString tmp_org="", tmp_dog="", tmp_sotrud="", tmp_adres="", tmp_tel="", tmp_naimen="", tmp_srok="", tmp_usl=""; //Здесь создаешь
    //временные переменные для всех полей которые не должны быть(NB!!!)пустыми
    ADOQuery2->Active = true;
    while(!ADOQuery1->Eof){


    ADOQuery2->Parameters->ParamByName("@org")->Value = ADOQuery1->Fields->Fields[1]->Value;
    ADOQuery2->Parameters->ParamByName("@dog")->Value = ADOQuery1->Fields->Fields[2]->Value;
    ADOQuery2->Parameters->ParamByName("@sotrud")->Value =ADOQuery1->Fields->Fields[3]->Value;
    ADOQuery2->Parameters->ParamByName("@adres")->Value = ADOQuery1->Fields->Fields[4]->Value;
    ADOQuery2->Parameters->ParamByName("@tel")->Value = ADOQuery1->Fields->Fields[5]->Value;
    ADOQuery2->Parameters->ParamByName("@naimen")->Value =ADOQuery1->Fields->Fields[6]->Value;
    ADOQuery2->Parameters->ParamByName("@srok")->Value =ADOQuery1->Fields->Fields[7]->Value;
    ADOQuery2->Parameters->ParamByName("@usl")->Value =ADOQuery1->Fields->Fields[8]->Value;



    ADOQuery2->ExecSQL();
    ADOQuery1->Next(); }
    Выдает ошибку при попытке импорта
    must declare variable '@org'


    Если же процедуру пишу в Базе
    Код (Text):
    CREATE PROCEDURE DobavIm
    @org varchar(50),
    @dog varchar(50),
    @sotrud varchar(50),
    @adres varchar(50),
    @tel varchar(50),
    @naimen varchar(50),
    @srok varchar(50),
    @usl varchar(50)
    AS
    Insert into TexПер (Название_орг,Договор,Сотрудники,Адрес,Телефон,Наименование,Срок_работ,Услови
    е) values (@org,@dog,@sotrud,@adres,@tel,@naimen,@srok,@usl)
    GO
    Код (Text):
    ADOQuery2->Active = true;
    while(!ADOQuery1->Eof){


    ADOQuery2->Parameters->ParamByName("@org")->Value = ADOQuery1->Fields->Fields[1]->Value;
    ADOQuery2->Parameters->ParamByName("@dog")->Value = ADOQuery1->Fields->Fields[2]->Value;
    ADOQuery2->Parameters->ParamByName("@sotrud")->Value =ADOQuery1->Fields->Fields[3]->Value;
    ADOQuery2->Parameters->ParamByName("@adres")->Value = ADOQuery1->Fields->Fields[4]->Value;
    ADOQuery2->Parameters->ParamByName("@tel")->Value = ADOQuery1->Fields->Fields[5]->Value;
    ADOQuery2->Parameters->ParamByName("@naimen")->Value =ADOQuery1->Fields->Fields[6]->Value;
    ADOQuery2->Parameters->ParamByName("@srok")->Value =ADOQuery1->Fields->Fields[7]->Value;
    ADOQuery2->Parameters->ParamByName("@usl")->Value =ADOQuery1->Fields->Fields[8]->Value;



    ADOQuery2->ExecSQL();
    ADOQuery1->Next(); }
    То выдает тоже самое must declare variable '@org'

    Что не так делаю?
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей