Автор Тема: Массовая замена путей к файлу  (Прочитано 14494 раз)

0 Пользователей и 4 Гостей просматривают эту тему.

Оффлайн morrison

  • Новичок
  • *
  • Сообщений: 58
Массовая замена путей к файлу
« : 30 Апреля 2010, 15:35:48 »
Приветствую

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

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

буду благодарен за пример  ::)

Оффлайн dd

  • Новичок
  • *
  • Сообщений: 6
Re: Массовая замена путей к файлу
« Ответ #1 : 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+ фильмов.
« Последнее редактирование: 25 Мая 2010, 16:35:34 от dd »

Оффлайн Reset

  • Глобальный модератор
  • *****
  • Сообщений: 1362
Re: Массовая замена путей к файлу
« Ответ #2 : 25 Мая 2010, 17:51:56 »
Выполняем скрипт:
update MOVIES set "path" = (Replace ("path", 'что_надо_заменить', 'на_что_будем_менять'));
Скрипты можно выполнять непосредственно из интерфейса программы. Необходимо запустить ее с ключом -debug или через пакетный файл debug.bat. При этом в меню Помощь появится пункт SQL. В появляющемся при его выборе окошке необходимо вставить нужный код, при необходимости поставить галочку As script и нажать кнопку Execute.
Нет описания? Нужны ответы? Есть предложения? Не хватает сайтов?

Оффлайн morrison

  • Новичок
  • *
  • Сообщений: 58
Re: Массовая замена путей к файлу
« Ответ #3 : 28 Мая 2010, 22:14:22 »
Большое спасибо!
Сериальчеки я уже перенёс автоматикой, но теперь будет удобно косяки подправить и на будущие полезный навык)

Цитировать
Кстати, вопрос  к автору - а что будет, если дальше работать с программой, используя Firebird-2.1.3?
Не автор но поделюсь опытом. У меня установлен Firebird 2.5 RC ::) , через него работает (только на чтение) внешний плагин PVDImport (плагин иногда подглючивает и firebird съедает всю (8г) память, но это бывает редко). PVD работает через тот же firebird без глюков (и память не утекает если без PVDImport). Так что наверное никаких проблем с свежими версиями.
« Последнее редактирование: 28 Мая 2010, 22:22:55 от morrison »

Оффлайн nostra

  • Администратор
  • *****
  • Сообщений: 2749
    • Personal Video Database
Re: Массовая замена путей к файлу
« Ответ #4 : 29 Мая 2010, 16:14:12 »
Цитировать
Кстати, вопрос  к автору - а что будет, если дальше работать с программой, используя Firebird-2.1.3?

Работать всё будет нормально, но после каждого обновления придётся заменять файлы fbembed.dll и fbclient.dll на правильную версию или не делать автоматических апгрейдов, загружать программу в архиве и обновлять все файлы кромк вышеперечисленных вручную.
Мы уже работаем над постановлением по углублению конструктивных мер, принятых в результате консолидации

Оффлайн BSB

  • Постоялец
  • ***
  • Сообщений: 96
  • Таких не бывает!
    • http://realbsb.ru
Re: Массовая замена путей к файлу
« Ответ #5 : 23 Ноября 2011, 22:10:44 »
А где можно IBExpert качнуть современный? А то у меня образца 2004-го года, матерится на icuu ... 2.dll

Оффлайн unreal666

  • Гуру
  • ****
  • Сообщений: 533
    • Сайт unreal666
Re: Массовая замена путей к файлу
« Ответ #6 : 23 Ноября 2011, 23:58:38 »
На http://ibexpert.net/ .
Но там сначала нужно зарегистрироваться, поэтому выложил на multi-up и multiupload
PVD 1.0.2.7, Win 7 x64, Phenom II X6 1055T 3.5 GHz / 8 GiB / 5,4 TiB / HD 4870 1 GiB

Оффлайн nostra

  • Администратор
  • *****
  • Сообщений: 2749
    • Personal Video Database
Re: Массовая замена путей к файлу
« Ответ #7 : 24 Ноября 2011, 00:05:14 »
Может быть вот этот проект ещё пригодится: http://www.flamerobin.org
Мы уже работаем над постановлением по углублению конструктивных мер, принятых в результате консолидации

Оффлайн BSB

  • Постоялец
  • ***
  • Сообщений: 96
  • Таких не бывает!
    • http://realbsb.ru
Re: Массовая замена путей к файлу
« Ответ #8 : 24 Ноября 2011, 11:53:56 »
Спасибо!

Оффлайн BSB

  • Постоялец
  • ***
  • Сообщений: 96
  • Таких не бывает!
    • http://realbsb.ru
Re: Массовая замена путей к файлу
« Ответ #9 : 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\', ''));
(оставить лишь имена файлов, чтобы отталкиваться от указанных в настройках путей)
Пишет, что столько-то записей обработано, но всё остается по-прежнему.

Оффлайн nostra

  • Администратор
  • *****
  • Сообщений: 2749
    • Personal Video Database
Re: Массовая замена путей к файлу
« Ответ #10 : 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 для того чтобы поле обновилось. Просто закрой и открой базу...
Мы уже работаем над постановлением по углублению конструктивных мер, принятых в результате консолидации

Оффлайн unreal666

  • Гуру
  • ****
  • Сообщений: 533
    • Сайт unreal666
Re: Массовая замена путей к файлу
« Ответ #11 : 28 Ноября 2011, 03:42:19 »
nostra

Так даннаая команда это с галкой "как скрипт"? Если да, то почему ты говорил, что что с ней, что без нее - один фиг?
Чем все-таки отличаются запуск как скрипта и как SQL-запроса?
PVD 1.0.2.7, Win 7 x64, Phenom II X6 1055T 3.5 GHz / 8 GiB / 5,4 TiB / HD 4870 1 GiB

Оффлайн BSB

  • Постоялец
  • ***
  • Сообщений: 96
  • Таких не бывает!
    • http://realbsb.ru
Re: Массовая замена путей к файлу
« Ответ #12 : 28 Ноября 2011, 10:20:50 »
nostra

Так даннаая команда это с галкой "как скрипт"? Если да, то почему ты говорил, что что с ней, что без нее - один фиг?
Чем все-таки отличаются запуск как скрипта и как SQL-запроса?
Насколько я понял, в одном случае ждет ответа, в другом (скрипт) ответа может не быть

Оффлайн BSB

  • Постоялец
  • ***
  • Сообщений: 96
  • Таких не бывает!
    • http://realbsb.ru
Re: Массовая замена путей к файлу
« Ответ #13 : 03 Декабря 2011, 18:04:49 »
Цитировать
Пробовал через Help/SQL в PVD выполнить
update MOVIES set "path" = (Replace ("path", 'T:\My\Info\Personal Video Database\movies\Posters\', ''));
(оставить лишь имена файлов, чтобы отталкиваться от указанных в настройках путей)
Пишет, что столько-то записей обработано, но всё остается по-прежнему.

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