Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.10.2009, 00:13
жекаизжека жекаизжека вне форума
Начинающий
 
Регистрация: 10.09.2008
Сообщения: 193
Репутация: 10
По умолчанию MySQL и Access

Ситуация такая, есть сайт использует базу MySQL, как мне данный из базы перенести в базу Access? так сказать импортировать....
Ответить с цитированием
  #2  
Старый 09.10.2009, 02:17
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Поставьте драйер MySQL ODBC, подключайтесь к базе и импортируйте на здоровье.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 09.10.2009, 13:54
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию

Цитата:
Сообщение от жекаизжека
Ситуация такая, есть сайт использует базу MySQL, как мне данный из базы перенести в базу Access? так сказать импортировать....
Существует море программ для этого .. например, можно поискать так
Ответить с цитированием
  #4  
Старый 09.10.2009, 19:13
жекаизжека жекаизжека вне форума
Начинающий
 
Регистрация: 10.09.2008
Сообщения: 193
Репутация: 10
По умолчанию

вот нашел как подлючиться к базе и вывод ее в DBGrid(все работает)

смотреть тут , не подскажете как теперь из DBGrid данные перенести в таблицу Access?
Ответить с цитированием
  #5  
Старый 10.10.2009, 00:12
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Наверное так:
Теперь вам для автоматизации процесса нужно определится как получить описания таблиц и индексов вашей MySQL-базы.
Потом на основании этой инфы сгенерить таблицы,индексы уже в акцесе.
И для каждой таблички из вашего MySQL-списка сделать обход данных с копированием в акцес.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 10.10.2009, 17:23
жекаизжека жекаизжека вне форума
Начинающий
 
Регистрация: 10.09.2008
Сообщения: 193
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Наверное так:
Теперь вам для автоматизации процесса нужно определится как получить описания таблиц и индексов вашей MySQL-базы.
Потом на основании этой инфы сгенерить таблицы,индексы уже в акцесе.
И для каждой таблички из вашего MySQL-списка сделать обход данных с копированием в акцес.
есть наверное тупая идея....в DBGrid прописываем

Код:
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
  form1.Label1.Caption:=form1.DBGrid1.Fields[1].AsString;
    form1.Label2.Caption:=form1.DBGrid1.Fields[2].AsString;
end;

end.
тем самым выводим одно значение в label, из него уже можно добавлять в таблицу Access

Код:
  Form1.AdoQuery1.Sql.clear;
Form1.ADOQuery1.SQL.Add('INSERT INTO new (Test1,Test2)');
Form2.ADOQuery2.SQL.Add('VALUES ('''+label1.Caption+''','''+label1.Caption+''')');
 Form2.ADOQuery2.ExecSQL;

но тоже только одно значение, далее как то надо сделать запрос на удаление этой записи из базы на сервере (MySQL)

Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
SimpleDataSet1.DataSet.CommandText:= 'delete from tnews where title='''+label1.Caption+''''  ;
end;

далее можно использовать для перехода курсора DBNavigator на следующию строчку в DBGrid

Код:
procedure TForm1.Button3Click(Sender: TObject);
begin
DBNavigator1.BtnClick(nbNext);
end;


.....в проблема в том чтобы сделать это все в одном цикле, грубо говоря по нажатию одной кнопки и длилось до тех пор пока база будет пустой (MySQL) и в конце выдало бы сообщение типо все данные перенесены.....
Ответить с цитированием
  #7  
Старый 10.10.2009, 20:12
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

DBGrid1 нужен только для отображения данных, для экспорта/импорта данных он вам нафик не нужен. Если речь идет об одной таблице, то можно все и ручками сделать, сгенерить в MySQL SQL-скрипт для создания таблицы и данных в ней, немножко адаптировать под Акцес и выполнить его в Акцесе. Но если у вас более одной таблицы, если вы хотите это принципиально сделать в Дельфи, то тогда по моему первому варианту.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #8  
Старый 10.10.2009, 22:27
жекаизжека жекаизжека вне форума
Начинающий
 
Регистрация: 10.09.2008
Сообщения: 193
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
DBGrid1 нужен только для отображения данных, для экспорта/импорта данных он вам нафик не нужен. Если речь идет об одной таблице, то можно все и ручками сделать, сгенерить в MySQL SQL-скрипт для создания таблицы и данных в ней, немножко адаптировать под Акцес и выполнить его в Акцесе. Но если у вас более одной таблицы, если вы хотите это принципиально сделать в Дельфи, то тогда по моему первому варианту.
могли бы помочь с реализацией....суть в том что есть сайт, на сайте оформляют заявку она попадает в базу MySQL(одна таблица "new"), далее из нее нужно вытащить все данные и переместить в существующиею базу Access (таблицу "new")

Последний раз редактировалось жекаизжека, 10.10.2009 в 23:08.
Ответить с цитированием
  #9  
Старый 11.10.2009, 00:11
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Операция разовая, или планируется это делать периодически? Сам себе отвечаю, скорее всего периодическая.
Тогда можно пойти самым коротким путем в расчете на то-что структура таблички на MySQL не будет менятся со временем.
1. Создать аналогичную по структуре табличку. Можно ручками, а можно и сгенрить скрипт на создание данной таблички в MySQL и как я уже писал ранее, адаптировать его под акцес.
2. Открыть запрос на получение всех данных за определенный период из MySQL.
3. Открыть таблю из акцеса.
4. Тупым обходом данных запроса из MySQL скопировать данные в акцесс.
5. Все.
Открывать данные вы научились, этот шаг пропустим. Обход будет выглядеть так:
Код:
 while not SimpleDataSet1.Eof
 do begin
    AdoTable1.Append;
    for i := 0 to SimpleDataSet1.FieldCount - 1
    do try
        AdoTable1.Fields[i].Value := SimpleDataSet1.Fields[i].Value;
       except
        AdoTable1.Fields[i].Value := null;
       end;
    AdoTable1.Post;
    SimpleDataSet1.Next;
    end;
Метод не самый быстрый, но зато простой как кирпич.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 11.10.2009 в 00:33.
Ответить с цитированием
  #10  
Старый 11.10.2009, 20:40
жекаизжека жекаизжека вне форума
Начинающий
 
Регистрация: 10.09.2008
Сообщения: 193
Репутация: 10
По умолчанию

а как можно сделать проверку если есть нет данных то сообщение, есть то выполнение, и после переноса удалялись все данные из таблицы....есть не сложно
Ответить с цитированием
  #11  
Старый 11.10.2009, 20:43
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Да,Нет,Может быть...
Переведите на более понятный русский - понял только половину из вашего сообщения.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #12  
Старый 12.10.2009, 01:34
жекаизжека жекаизжека вне форума
Начинающий
 
Регистрация: 10.09.2008
Сообщения: 193
Репутация: 10
По умолчанию

извиняюсь за написанно просто уже 3 день что то не спиться...как мне очисть таблицу MYSQL после копирования данный в таблицу Access и сделать проверку таблицы есть в ней данные или нет, если есть то выполнять копирование если нет тогда сообщить что она пустая
Ответить с цитированием
  #13  
Старый 12.10.2009, 08:06
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Ага, значит у вас стоит задача постоянной подкачки данных.
Тогда нам необходимо поле или группа полей выборку по которому мы будем делать. Допустим таковым является Поле-счетчик. Тогда делаем выборку по такому полю в акцесе:
Код:
Select Max(ID) as MaxID from MyTable;
и выбираем из майскуля все данные старше этого номера.
Код:
Select * from MyTable where ID>MaxID
После экспорта в акцес (см. предыдущие посты) мы удаляем из майскуля экспортированные записи.
Код:
Delete from MyTable where ID>MaxID

Но эта схема будет работать для новых данных, а вот если речь идет об изменениях, тогда вам надо в таблице иметь соответствующие поля - например ModifyDate,ModifyTime. Тогда будет так:
Код:
Select * from MyTable where ID>MaxID or (ModifyDate>=:ModifyDate and ModifyTime>=:ModifyTime)
После экспорта в акцес (см. предыдущие посты) мы удаляем из майскуля экспортированные записи.
Код:
Delete from MyTable where ID>MaxID or (ModifyDate>=:ModifyDate and ModifyTime>=:ModifyTime)

Вот где-то в таком ключе.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 12.10.2009 в 08:13.
Ответить с цитированием
  #14  
Старый 13.10.2009, 23:22
жекаизжека жекаизжека вне форума
Начинающий
 
Регистрация: 10.09.2008
Сообщения: 193
Репутация: 10
По умолчанию

не удаляется..может не там его вставляю...хотя после экспорта сразуже.....
Ответить с цитированием
  #15  
Старый 13.10.2009, 23:35
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Показывайте, как вы это делаете.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:49.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter