Personal Video Database

Русский => Поддержка => Тема начата: morrison от 30 Апреля 2010, 15:35:48

Название: Массовая замена путей к файлу
Отправлено: morrison от 30 Апреля 2010, 15:35:48
Приветствую

Предстоит большой дисковый переезд. Т.к. это касается сериалов, не хочеся полагаться на местами несовершенную автоматику.

Возможно, кто-нибудь уже решал подобную задачу с помощью SQL запросов? Найти и заменить путь А на путь Б.

буду благодарен за пример  ::)
Название: Re: Массовая замена путей к файлу
Отправлено: dd от 25 Мая 2010, 16:31:22
У меня была аналогичная задача - заменить все пути на относительные, чтобы база на 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+ фильмов.
Название: Re: Массовая замена путей к файлу
Отправлено: Reset от 25 Мая 2010, 17:51:56
Выполняем скрипт:
update MOVIES set "path" = (Replace ("path", 'что_надо_заменить', 'на_что_будем_менять'));
Скрипты можно выполнять непосредственно из интерфейса программы. Необходимо запустить ее с ключом -debug или через пакетный файл debug.bat. При этом в меню Помощь появится пункт SQL. В появляющемся при его выборе окошке необходимо вставить нужный код, при необходимости поставить галочку As script и нажать кнопку Execute.
Название: Re: Массовая замена путей к файлу
Отправлено: morrison от 28 Мая 2010, 22:14:22
Большое спасибо!
Сериальчеки я уже перенёс автоматикой, но теперь будет удобно косяки подправить и на будущие полезный навык)

Цитировать
Кстати, вопрос  к автору - а что будет, если дальше работать с программой, используя Firebird-2.1.3?
Не автор но поделюсь опытом. У меня установлен Firebird 2.5 RC ::) , через него работает (только на чтение) внешний плагин PVDImport (плагин иногда подглючивает и firebird съедает всю (8г) память, но это бывает редко). PVD работает через тот же firebird без глюков (и память не утекает если без PVDImport). Так что наверное никаких проблем с свежими версиями.
Название: Re: Массовая замена путей к файлу
Отправлено: nostra от 29 Мая 2010, 16:14:12
Цитировать
Кстати, вопрос  к автору - а что будет, если дальше работать с программой, используя Firebird-2.1.3?

Работать всё будет нормально, но после каждого обновления придётся заменять файлы fbembed.dll и fbclient.dll на правильную версию или не делать автоматических апгрейдов, загружать программу в архиве и обновлять все файлы кромк вышеперечисленных вручную.
Название: Re: Массовая замена путей к файлу
Отправлено: BSB от 23 Ноября 2011, 22:10:44
А где можно IBExpert качнуть современный? А то у меня образца 2004-го года, матерится на icuu ... 2.dll
Название: Re: Массовая замена путей к файлу
Отправлено: unreal666 от 23 Ноября 2011, 23:58:38
На http://ibexpert.net/ .
Но там сначала нужно зарегистрироваться, поэтому выложил на multi-up (http://multi-up.com/600148) и multiupload (http://www.multiupload.com/FK5UBJSO9Z)
Название: Re: Массовая замена путей к файлу
Отправлено: nostra от 24 Ноября 2011, 00:05:14
Может быть вот этот проект ещё пригодится: http://www.flamerobin.org
Название: Re: Массовая замена путей к файлу
Отправлено: BSB от 24 Ноября 2011, 11:53:56
Спасибо!
Название: Re: Массовая замена путей к файлу
Отправлено: BSB от 27 Ноября 2011, 20:02:49
Качнул. А какая связка логин/пароль? SYSDBA/masterkey или ADMIN/pvd? Не могу подключиться.
Пробовал через Help/SQL в PVD выполнить
update MOVIES set "path" = (Replace ("path", 'T:\My\Info\Personal Video Database\movies\Posters\', ''));
(оставить лишь имена файлов, чтобы отталкиваться от указанных в настройках путей)
Пишет, что столько-то записей обработано, но всё остается по-прежнему.
Название: Re: Массовая замена путей к файлу
Отправлено: nostra от 28 Ноября 2011, 01:02:39
SYSDBA/masterkey - это правельная связка

Цитировать
Пробовал через Help/SQL в PVD выполнить
update MOVIES set "path" = (Replace ("path", 'T:\My\Info\Personal Video Database\movies\Posters\', ''));
(оставить лишь имена файлов, чтобы отталкиваться от указанных в настройках путей)
Пишет, что столько-то записей обработано, но всё остается по-прежнему.

Тут ещё нужен Commit для того чтобы поле обновилось. Просто закрой и открой базу...
Название: Re: Массовая замена путей к файлу
Отправлено: unreal666 от 28 Ноября 2011, 03:42:19
nostra

Так даннаая команда это с галкой "как скрипт"? Если да, то почему ты говорил, что что с ней, что без нее - один фиг?
Чем все-таки отличаются запуск как скрипта и как SQL-запроса?
Название: Re: Массовая замена путей к файлу
Отправлено: BSB от 28 Ноября 2011, 10:20:50
nostra

Так даннаая команда это с галкой "как скрипт"? Если да, то почему ты говорил, что что с ней, что без нее - один фиг?
Чем все-таки отличаются запуск как скрипта и как SQL-запроса?
Насколько я понял, в одном случае ждет ответа, в другом (скрипт) ответа может не быть
Название: Re: Массовая замена путей к файлу
Отправлено: BSB от 03 Декабря 2011, 18:04:49
Цитировать
Пробовал через Help/SQL в PVD выполнить
update MOVIES set "path" = (Replace ("path", 'T:\My\Info\Personal Video Database\movies\Posters\', ''));
(оставить лишь имена файлов, чтобы отталкиваться от указанных в настройках путей)
Пишет, что столько-то записей обработано, но всё остается по-прежнему.

Тут ещё нужен Commit для того чтобы поле обновилось. Просто закрой и открой базу...
хм, не помогает
может скриптом как-нибудь commit этот выполнить?