Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ADO, IB + MySQL, Firebird, Копирование данных из FB в MY 
V
    Опции темы
Darked
Дата 17.3.2008, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 26.2.2004
Где: Южный Урал

Репутация: нет
Всего: нет



       Доброе время суток.
  Задача: есть две СУБД - Firebird и MySQL. Нужно скопировать некоторые данные из двух таблиц Firebird(2.03) и поместить в одну, созданную таблицу в Mysql (версия 4.18 вроде). В Firebird стоит charset=none. Эти данные из MySQL потом будут выводиться на сайт средствами php. Возникает проблема - какого бы чарсет я не создавал бд на мускуле, русские символы туда переносятся крякозяблами... Кто - нибудь сталкивался с подобной необходимостью?
  Для коннекта к Firebird использую компоненты Interbase, к MySQL - ADO + driver ODBC 3.51.
  Код что - то типа:
Код

procedure TForm1.FormActivate(Sender: TObject);
begin
  adoConM.ConnectionString := 'Driver={MySQL ODBC 3.51 Driver};'
            +'Server=10.ххх.ххх.ххх;'
            +'Port=3306;'
            +'Database=Х;'
            +'User=Х;'
            +'Password=Х;Option=3;';

  adoConM.Connected := True;
  adoQry.Active := True;

  try
    dbUst.Connected := True;
  except
    ShowMessage('Ошибка при соединении с БД');
  end;
end;

procedure TForm1.btnCopyDataClick(Sender: TObject);
begin
 ibTrans.StartTransaction;
  ibQry.Close;
  ibQry.SQL.Clear;
  ibQry.SQL.Add('SELECT ...');
  ibQry.Open;

 while not ibQry.Eof do
    begin
      adoQry.Close;
      adoQry.SQL.Clear;
      adoQry.SQL.Add('INSERT INTO ...');
      adoQry.Parameters.ParamByName('a').Value := ibQry.FieldByName('A').AsInteger;
      adoQry.Parameters.ParamByName('b').Value := ibQry.FieldByName('B').AsInteger;
.
.
.
      adoQry.ExecSQL;

      ibQry.Next;
    end;

    ibTrans.Commit;
end;

   Причём написал скрипт копирования на php - никакх проблем не возникло при копировании в бд с сз1251.


--------------------
Veni, Vidi, Vici !!!
PM MAIL ICQ   Вверх
Darked
Дата 19.3.2008, 06:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 26.2.2004
Где: Южный Урал

Репутация: нет
Всего: нет



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


--------------------
Veni, Vidi, Vici !!!
PM MAIL ICQ   Вверх
Zmitro
Дата 19.3.2008, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 19.3.2008

Репутация: 1
Всего: 1



Попробуйте в свойствах подключения к БД Firebird использовать в Connect Params: lc_ctype=WIN1251
PM MAIL   Вверх
Akella
Дата 19.3.2008, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



А как именно ты переносишь?

Добавлено через 18 секунд
Цитата(Zmitro @  19.3.2008,  09:10 Найти цитируемый пост)
Попробуйте в свойствах подключения к БД Firebird использовать в Connect Params: lc_ctype=WIN1251 

ничё не получится

Добавлено через 48 секунд
ты пишешь программу или тебе единоразово нужно перенести?
PM MAIL   Вверх
Darked
Дата 19.3.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 26.2.2004
Где: Южный Урал

Репутация: нет
Всего: нет



Akella, 
    Переношу так: происходит коннект к обоим базам, в Firebird выборкой собираю нужные мне таблицы, поля. В запрос на вставку в MySQL в качество параметров adoQry.Parameters.ParamByName('a').Value := ibQry.FieldByName('A').AsInteger; подставляю нужные значения полей из сделанной выборки к Firebird, и так для каждой выбранной строки.
   Программа не разовая, так нужно будет делать периодически.

  
Zmitro,  к charset = NONE такой подход не подойдёт.


--------------------
Veni, Vidi, Vici !!!
PM MAIL ICQ   Вверх
Akella
Дата 20.3.2008, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



я уже делал подобное, попробуй всё выбирать в стринг грид или в ДБГрид, например, посмотри, как оно отображается.
PM MAIL   Вверх
Zmitro
Дата 21.3.2008, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 19.3.2008

Репутация: 1
Всего: 1



как альтернатива но слегка геморная - выгружать из FB в файл и потом импортить. Можно сразу выгружать в sql файл insert-ами
PM MAIL   Вверх
Darked
Дата 26.3.2008, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 26.2.2004
Где: Южный Урал

Репутация: нет
Всего: нет



Akella, что имеено выбрать?
  Те данные, которые я выбираю из FB в DbGrid'е отображаются нормально? в том - то и дело. 
  Проблема в отображении (и соотвественно записи) MySQL данных.
 

Zmitro, вариант, конечно, но... не, это не выход.


--------------------
Veni, Vidi, Vici !!!
PM MAIL ICQ   Вверх
Darked
Дата 26.3.2008, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 26.2.2004
Где: Южный Урал

Репутация: нет
Всего: нет



   Всем спасибо, проблема решена.
   Помогла посылка команды SET NAMES cp1251 после установления соединения!


--------------------
Veni, Vidi, Vici !!!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

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


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0876 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.