Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2010, 10:18   #11
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Что-то не то ты делаешь.
Итак, в папку Test бросаю несколько файлов Paradox7
Создаю новую MySQL-базу MyTest. Пустую.
Запускаем конвертер.




И вот они таблички...
_SERGEYX_ вне форума Ответить с цитированием
Старый 16.10.2010, 18:45   #12
palevg
Пользователь
 
Аватар для palevg
 
Регистрация: 03.10.2010
Сообщений: 77
По умолчанию

Вот у тебя на предпоследнем скрине есть
Цитата:
1 records inserted.
Creating index for 'test' ...
Total time ...
А у меня только
ESF_PScr.jpg

И всё.
После этого шагаем в phpMyAdmin и видим всё ту же пустую БД.
По соотношению цена-качество, халявное пиво не имеет конкурентов.
palevg вне форума Ответить с цитированием
Старый 16.10.2010, 23:02   #13
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Не знаю. Попробуй другой конвертер.
Или напиши свой. За час сваять можно.
Выведи имена всех таблиц в listBox через Session.
Подключись к MySQL базе. И далее циклом по листбоксу (пример):
Код:
DROP TABLE IF EXISTS <имя таблицы>;
CREATE TABLE `<имя таблицы>` (
// for i:=0 to TableFields.Count - 1 do
// определить тип и размер поля и циклично добавить строку, как строки ниже.
// Если где-то ошибешься, например с "default NULL", автоинкрементом или индесками
// - ничего страшного. Потом подправишь руками.
  `PVH` float default NULL,
  `Mel` float default NULL,
  `PVH04` float default NULL,
  `id` int(11) NOT NULL auto_increment,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=cp1251;
И выполнить запрос.

И далее либо составить и выполнить запрос....
Код:
INSERT INTO <имя таблицы> VALUES
// for i:= 0 to Table.RecordCoun-1 do
  (5382, 15, 'Упаковка', 1, 1),
  (5967, 27, 'Яблоня', 1, 824),
  (5968, 2, 'Белая корка', 1, 825);
(Строки в кавычках, числа без кавычек, ничего сложного).
Либо загрузить пустую, вновь созданную таблицу и перегнать в нее циклом все записи.

Тип поля можно определить, например так (только пример)
Код:
var    i: Integer;
  F: TFieldDef;
  D: string;
begin
  with Table1 do
  begin
    for i := 0 to FieldDefs.Count - 1 do
    begin
      F := FieldDefs.Items[i];
      case F.DataType of
        ftUnknown: D := 'Unknown';
        ftString: D := 'String';
        ftSmallint: D := 'SmallInt';
        ftInteger: D := 'Integer';
        ftWord: D := 'Word';
        ftBoolean: D := 'Boolean';
        ftFloat: D := 'Float';
        ftCurrency: D := 'Currency';
        ftBCD: D := 'BCD';
        ftDate: D := 'Date';
        ftTime: D := 'Time';
        ftDateTime: D := 'DateTime';
        ftBytes: D := 'Bytes';
        ftVarBytes: D := '';
        ftBlob: D := 'BLOB';
        ftMemo: D := 'Memo';
        ftGraphic: D := 'Graphic';
      else
        D := '';
      end;
      ListBox1.Items.Add(F.Name + ', ' + D);
    end;
  end;
end;
_SERGEYX_ вне форума Ответить с цитированием
Старый 17.10.2010, 00:32   #14
palevg
Пользователь
 
Аватар для palevg
 
Регистрация: 03.10.2010
Сообщений: 77
По умолчанию

Очередное спасибо _SERGEYX_ за такое внимание к моему вопросу
А по теме - для начала попробую другой конвертер (зачем изобретать велосипед??)
По соотношению цена-качество, халявное пиво не имеет конкурентов.
palevg вне форума Ответить с цитированием
Старый 17.10.2010, 01:02   #15
palevg
Пользователь
 
Аватар для palevg
 
Регистрация: 03.10.2010
Сообщений: 77
По умолчанию

Попробовал. Но не другой, а поновее версию нашего ESF. Нашёл 6.0 (хотя, по секрету, искал 5.9.34 )
В общем, теперь хоть пытается конвертить, но хэппи-энда нету по другой причине:
Цитата:
Connecting SOURCE('D:\DataBases\License\Data') 'Paradox 5.x (*.db)' ...
Connecting DEST('License') 'MySQL Database' ...
=================================== ==========
Getting 'P_Founds' table structure ...
Get 'P_Founds' structure failed!
[800A0CB3] Объект или поставщик не может выполнить требуемую операцию.
=================================== ==========
Conversion completed!
Кстати, какие ещё есть программы-конверторы?
По соотношению цена-качество, халявное пиво не имеет конкурентов.
palevg вне форума Ответить с цитированием
Старый 24.11.2010, 23:44   #16
palevg
Пользователь
 
Аватар для palevg
 
Регистрация: 03.10.2010
Сообщений: 77
По умолчанию

Возобновлю тему

Собственно, разобрался я и с ADO, и с MySQL.
ADO отпало по причине меньшей скорости работы (как оказалось - медленнее даже чем BDE!!)

Конвертнул базу с BDE на MySQL. Программу тоже отредактировал, с учётом отличий между этими СУБД.
И всё бы ничего, скорость выполнения большинства SQL-запросов хорошая. Но почему-то парочка запросов выполняется ну
просто по-черепашьи!!

Например: 2 таблицы - enterprs (предприятия) и orders (заявления предприятий).
В таблице enterprs около 2000 записей, в orders - около 3500.
SQL-запрос:
Код:
select * from enterprs
where Id in (select EnterpriseId from orders where State=0)
order by NameEnterpr
В BDE этот запрос выполняется за полсекунды, в MySQL же - секунд 7-8 !!!
Что за хрень?
По соотношению цена-качество, халявное пиво не имеет конкурентов.

Последний раз редактировалось palevg; 24.11.2010 в 23:58.
palevg вне форума Ответить с цитированием
Старый 25.11.2010, 08:48   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

для начала попробуйте в таблицу orders добавить индекс по полю State
и уж обязательно (это в любой СУБД надо делать в обязательном порядке) все foreignkey должны иметь индексы - поэтому в таблицу enterprs добавить (если его там нет, конечно) индекс по полю Id
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.11.2010, 00:29   #18
palevg
Пользователь
 
Аватар для palevg
 
Регистрация: 03.10.2010
Сообщений: 77
По умолчанию

Индексы для поля Id есть в обоих таблицах (и enterprs, и orders). Это автоинкрементные ключи, и индексы там есть и без меня. На поле State в таблице orders индекс добавлю и отпишусь (по результату).

Насчёт foreignkey - их добавить не могу, т.к. в закладке "Foreign keys" пишет следующее: "The selected table engine (MyISAM) does not support foreign keys."
К слову: файлы БД конвертировал, используя предложенный движок по умолчанию - MyISAM.
Безболезненно могу конвертнуть по новой, но тогда скажите - какой движок использовать?


Не прошло и 10-ти минут, я уже готов отписаться (как и обещал )
Забегая наперёд - спасибо заслуженному модератору Serge_Bliznykov!!!
Теперь по-порядку. Сначала поставил индекс для поля State в таблице orders. Стало быстрее, но совсем ненамного...
Потом я "пошёл" в другую таблицу (licenze), которая тоже работает по принципу помощника для таблицы enterprs, и у неё тоже есть поле State, выполняющее похожую задачу. Поставил индекс для него. Но фак!! Запрос стал выполняться в разы медленнее!!!!
Убрал я индекс со State, решил поставить на поле EntID, что есть ссылка на Id в таблице enterprs. И тут попёрло ))))) Запрос выполнился, я и глазом моргнуть не успел!!
Теперь поставил индекс на аналогичное поле (EntID) в таблице orders - та же мегаположительная картина!!
Так что теперь осталось день-два (допишу изменения кода в связи с переходом от одной СУБД к другой) - и начнём официальный переход
По соотношению цена-качество, халявное пиво не имеет конкурентов.

Последний раз редактировалось palevg; 28.11.2010 в 00:46.
palevg вне форума Ответить с цитированием
Старый 07.12.2010, 23:13   #19
palevg
Пользователь
 
Аватар для palevg
 
Регистрация: 03.10.2010
Сообщений: 77
По умолчанию

Ещё немного помучаю наших гуру ))))

Всё переписал под MySQL, работает как часы.
Но! Пока что не сумел запустить прогу с компа в локальной сети
Сразу скажу - юзера на сервере сделал, разрешения ему установил. Но коннектиться не хочет хоть ты тресни!!
Что за подводные камни могут быть?
По соотношению цена-качество, халявное пиво не имеет конкурентов.
palevg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
После BDE Шульц Свободное общение 4 13.10.2009 23:58
Alias в BDE Шульц БД в Delphi 5 25.06.2009 23:17
BDE Arsgun БД в Delphi 4 29.05.2007 22:24
BDE Administrator Prisian БД в Delphi 0 29.05.2007 17:49