Personal Video Database
Русский => Поддержка => Тема начата: morrison от 30 Апреля 2010, 15:35:48
-
Приветствую
Предстоит большой дисковый переезд. Т.к. это касается сериалов, не хочеся полагаться на местами несовершенную автоматику.
Возможно, кто-нибудь уже решал подобную задачу с помощью SQL запросов? Найти и заменить путь А на путь Б.
буду благодарен за пример ::)
-
У меня была аналогичная задача - заменить все пути на относительные, чтобы база на usb-hdd была реально portable. В общем виде получилось так:
(Все операции выполняем в копии каталога pvd!!!)
1. Устанавливаем IBExpert.
2. Загружаем http://www.ibase.ru/firebird/213/Firebird-2.1.3.18185-0_Win32_embed.zip
Распаковываем в папку pvd_copy с заменой файлов. (В Firebird 2.0, которая идет с pvd, отсутствует функция Replace.)
3. В папку IBExpert копируем файл firebird.msg (который из скачанного архива версии 2.1.3) и запускаем IBExpert.exe.
4. Добавляем базу и выбираем параметры подключения:
Server = Local
Server Version = Firebird 2.0
Database file = path_to_pvd_copy/Movies.pvd
User name = ADMIN
Password = pvd
Charset = UTF8
Client Library File = path_to_pvd_copy/fbembed.dll
Font Characters Set = Russian_Charset.
5. Подключаем базу. Выбираем таблицу MOVIES и смотрим структуру базы.
В главном меню выбираем "Tools" - "Script executive".
Выполняем скрипт:
update MOVIES set "path" = (Replace ("path", 'что_надо_заменить', 'на_что_будем_менять'));
6. Закрываем IBExpert, копируем отредактированный Movies.pvd в исходный каталог pvd, запускаем pvd и проверяем результат.
На всякий случай можно выполнить оптимизацию базы, чтобы убедиться в отсутствии ошибок, но это уже для перестраховки.
Кстати, вопрос к автору - а что будет, если дальше работать с программой, используя Firebird-2.1.3?
P.S. Автору - огромное спасибо за программу. Наконец-то я разобрался со своими 2000+ фильмов.
-
Выполняем скрипт:
update MOVIES set "path" = (Replace ("path", 'что_надо_заменить', 'на_что_будем_менять'));
Скрипты можно выполнять непосредственно из интерфейса программы. Необходимо запустить ее с ключом -debug или через пакетный файл debug.bat. При этом в меню Помощь появится пункт SQL. В появляющемся при его выборе окошке необходимо вставить нужный код, при необходимости поставить галочку As script и нажать кнопку Execute.
-
Большое спасибо!
Сериальчеки я уже перенёс автоматикой, но теперь будет удобно косяки подправить и на будущие полезный навык)
Кстати, вопрос к автору - а что будет, если дальше работать с программой, используя Firebird-2.1.3?
Не автор но поделюсь опытом. У меня установлен Firebird 2.5 RC ::) , через него работает (только на чтение) внешний плагин PVDImport (плагин иногда подглючивает и firebird съедает всю (8г) память, но это бывает редко). PVD работает через тот же firebird без глюков (и память не утекает если без PVDImport). Так что наверное никаких проблем с свежими версиями.
-
Кстати, вопрос к автору - а что будет, если дальше работать с программой, используя Firebird-2.1.3?
Работать всё будет нормально, но после каждого обновления придётся заменять файлы fbembed.dll и fbclient.dll на правильную версию или не делать автоматических апгрейдов, загружать программу в архиве и обновлять все файлы кромк вышеперечисленных вручную.
-
А где можно IBExpert качнуть современный? А то у меня образца 2004-го года, матерится на icuu ... 2.dll
-
На http://ibexpert.net/ .
Но там сначала нужно зарегистрироваться, поэтому выложил на multi-up (http://multi-up.com/600148) и multiupload (http://www.multiupload.com/FK5UBJSO9Z)
-
Может быть вот этот проект ещё пригодится: http://www.flamerobin.org
-
Спасибо!
-
Качнул. А какая связка логин/пароль? SYSDBA/masterkey или ADMIN/pvd? Не могу подключиться.
Пробовал через Help/SQL в PVD выполнить
update MOVIES set "path" = (Replace ("path", 'T:\My\Info\Personal Video Database\movies\Posters\', ''));
(оставить лишь имена файлов, чтобы отталкиваться от указанных в настройках путей)
Пишет, что столько-то записей обработано, но всё остается по-прежнему.
-
SYSDBA/masterkey - это правельная связка
Пробовал через Help/SQL в PVD выполнить
update MOVIES set "path" = (Replace ("path", 'T:\My\Info\Personal Video Database\movies\Posters\', ''));
(оставить лишь имена файлов, чтобы отталкиваться от указанных в настройках путей)
Пишет, что столько-то записей обработано, но всё остается по-прежнему.
Тут ещё нужен Commit для того чтобы поле обновилось. Просто закрой и открой базу...
-
nostra
Так даннаая команда это с галкой "как скрипт"? Если да, то почему ты говорил, что что с ней, что без нее - один фиг?
Чем все-таки отличаются запуск как скрипта и как SQL-запроса?
-
nostra
Так даннаая команда это с галкой "как скрипт"? Если да, то почему ты говорил, что что с ней, что без нее - один фиг?
Чем все-таки отличаются запуск как скрипта и как SQL-запроса?
Насколько я понял, в одном случае ждет ответа, в другом (скрипт) ответа может не быть
-
Пробовал через Help/SQL в PVD выполнить
update MOVIES set "path" = (Replace ("path", 'T:\My\Info\Personal Video Database\movies\Posters\', ''));
(оставить лишь имена файлов, чтобы отталкиваться от указанных в настройках путей)
Пишет, что столько-то записей обработано, но всё остается по-прежнему.
Тут ещё нужен Commit для того чтобы поле обновилось. Просто закрой и открой базу...
хм, не помогает
может скриптом как-нибудь commit этот выполнить?