|
Вопрос к тем, кто знаком с исходниками
|
|||
---|---|---|---|
#18+
Возможно ли (теоретически и насколько трудоемко) из gbak сделать конветор чарсетов. Чтобы на входе он получал FBK, а на выходе FDB. И при этом менял один указанный чарсет на другой указанный чарсет с нужными преобразованиями строк. Меня, конечно, больше волнует вариант WIN1251 -> UTF8. Т.е. есть у меня архив FBK. Там конечно не только WIN1251, но и OCTETS встречается, может ещё что-нибудь. Я запускаю такой конвертор и у меня выходит FDB, где все строки WIN1251 заменены на UTF8. Как понимаю, какие-то преобразования/фиксы gbak всё-таки делает, есть ведь опция "Fix malformed UNICODE_FSS" или хотя бы та же ерунда с COMPUTED BY полями. Может за компанию и чарсет можно сменить? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2020, 22:02 |
|
Вопрос к тем, кто знаком с исходниками
|
|||
---|---|---|---|
#18+
Теоретически это возможно. На практике быстрее будет перегнать данные через IBDataPump с правильной настройкой. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2020, 22:12 |
|
Вопрос к тем, кто знаком с исходниками
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Теоретически это возможно. На практике быстрее будет перегнать данные через IBDataPump с правильной настройкой. Речь о конвертации некоторого кол-ва баз отличающихся структурой в автоматическом режиме (молча, без вопросов, настроек). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2020, 22:20 |
|
Вопрос к тем, кто знаком с исходниками
|
|||
---|---|---|---|
#18+
ggreggory все строки WIN1251 заменены на UTF8 Хотя сама идея как будто неплоха, может подобный фичреквест уже есть в трекере? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2020, 22:40 |
|
Вопрос к тем, кто знаком с исходниками
|
|||
---|---|---|---|
#18+
ggreggory, ну, само оно конвертировать из одного чарсета в другой не будет никогда, это я ответственно заявляю. Потому что подобная конвертация - это задача разработчика. То есть, он должен взять скрипт базы, проверить его на все длины строк, на левые чарсеты, потом указать у скрипта utf8, создать базу, после чего проверить работу приложения с этой базой, ну а уже потом сконвертировать старую базу в новую ибпамп-ом. www.ibase.ru/unicode_faq/ Это вам там хочется "одной кнопкой" win1251 поменять на utf8. А есть люди с базами, где в базе штук 5 разных чарсетов, и они еще хотя туда воткнуть uft8, например. И другие варианты тоже есть. И автоматизировать все варианты увы, никак не получится. Ivan_PisarevskyХотя сама идея как будто неплоха, может подобный фичреквест уже есть в трекере? идея хреновая, надеюсь что если даже будет в трекере, ее забракуют. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 10:16 |
|
Вопрос к тем, кто знаком с исходниками
|
|||
---|---|---|---|
#18+
kdv идея хреновая, ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 10:53 |
|
Вопрос к тем, кто знаком с исходниками
|
|||
---|---|---|---|
#18+
Интересно, как (какие) данные он должен конвертить - поля, с каким заданным чарсетом? А None? В общем, частно-странная проблема. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 11:51 |
|
Вопрос к тем, кто знаком с исходниками
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Интересно, как (какие) данные он должен конвертить - поля, с каким заданным чарсетом? Гаджимурадов Рустам А None? Гаджимурадов Рустам В общем, частно-странная проблема. Когда мне понадобилось, конвертил через скрипт и переливку(как выше советовали), особых проблем не было. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 14:55 |
|
Вопрос к тем, кто знаком с исходниками
|
|||
---|---|---|---|
#18+
> Проблема, как проблема, отчего б ее не обсудить? Обсудить-то можно. Сомнительно, что гбак нужно курочить. Хотя какая-то частная версия с ключом может и не помешала бы (хотя опять же сомнительно с т.з. вложений времени). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 15:03 |
|
Вопрос к тем, кто знаком с исходниками
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, это не так легко сделать как кажется. Ну допустим в таблицах поля конвертировать можно. Но есть ещё домены с заданным чарсетом. Их молча заменять? А ещё строковые переменные и домены могут использоваться в процедурах, функциях, триггерах. В gbak их код не перекомпилируется. Так что предвижу там проблемы ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 15:18 |
|
Вопрос к тем, кто знаком с исходниками
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky Строки длиннее 8к символов приведут к невосстановимому состоянию. Будет ошибка. Сейчас тоже выдает (писал в другой ветке): Код: plaintext 1. 2. 3. 4. 5.
Так что эта проверка уже есть в GBAK, ничего нового добавлять не нужно. Ivan_Pisarevsky Хотя сама идея как будто неплоха, может подобный фичреквест уже есть в трекере? Ничего в этом не понимаю. А реквесты они бесплатные или там заказчик-бюджет-сроки? Ivan_Pisarevsky все строковые и блоб поля с заданным в ключе черсетом. Да, да! Блобы тоже, про блобы я забыл! А ещё параметры процедур, функций и UDF. Симонов Денис это не так легко сделать как кажется. Ну допустим в таблицах поля конвертировать можно. Но есть ещё домены с заданным чарсетом. Их молча заменять? Как понимаю, таблицы без доменов не бывают. Это домены бывают или системные или пользовательские. Симонов Денис А ещё строковые переменные и домены могут использоваться в процедурах, функциях, триггерах. В gbak их код не перекомпилируется. Так что предвижу там проблемы А сейчас дефолтный чарсет БД ведь влияет на чарсеты внутренних переменных в процедурах. Мы меняем чарсет БД, процедуры ведь сами не перекомпилируются. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 15:33 |
|
Вопрос к тем, кто знаком с исходниками
|
|||
---|---|---|---|
#18+
Симонов Денис> В gbak их код не перекомпилируется. Чего это? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 16:14 |
|
Вопрос к тем, кто знаком с исходниками
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, исходный код процедур копируется и их BLR, компиляция не просходит. Если бы происходила компиляция, то невозможно было бы удалить сорцы процедур, чтобы бекап оставался восстанавливаемый. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 16:37 |
|
Вопрос к тем, кто знаком с исходниками
|
|||
---|---|---|---|
#18+
Это вопрос как закодить. Хотя гбак тут ИМХО трогать не надо (если исходник не обязательно "с неправильным чарсетом"). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 19:17 |
|
Вопрос к тем, кто знаком с исходниками
|
|||
---|---|---|---|
#18+
Симонов Денис это не так легко сделать как кажется. Симонов Денис ак что предвижу там проблемы ggreggory А реквесты они бесплатные или там заказчик-бюджет-сроки? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 22:16 |
|
Вопрос к тем, кто знаком с исходниками
|
|||
---|---|---|---|
#18+
17.12.2020 16:37, Симонов Денис пишет: > исходный код процедур копируется и их BLR, компиляция не просходит. имеет место быть невосстановимый бекап из-за "план кеннот би юзет". так что, тезис не совсем корректен. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2020, 15:01 |
|
Вопрос к тем, кто знаком с исходниками
|
|||
---|---|---|---|
#18+
Мимопроходящий, так это ошибка не из-за того, что компиляция происходит. Просто BLR на корректность проверяется. База данных с удалёнными исходниками ХП, вполне себе восстанавливается ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2020, 15:14 |
|
Вопрос к тем, кто знаком с исходниками
|
|||
---|---|---|---|
#18+
Пока занимался темой нашел несколько записей в трекере: http://tracker.firebirdsql.org/browse/CORE-4661 http://tracker.firebirdsql.org/browse/CORE-5963 От своего предложения отказываюсь. Как оказалось всё совсем не сложно сделать клиентским приложением. Работает быстро, я доволен. Бонусом будет то, что процессом конвертации можно управлять. Например, в некоторых базах у меня оказались UDF без исходников, которые никак на UTF8 не переделать. Когда ты сам управляешь конвертором, то можешь выбрать - для каких UDF менять кодировку, а для каких - нет. Со встроенной процедурой конвертации такое бы не прокатило. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2021, 16:11 |
|
Вопрос к тем, кто знаком с исходниками
|
|||
---|---|---|---|
#18+
Да, пока делал наткнулся на неприятный глюк. Иногда измененная кодировка строковых полей не подхватывалась создаваемыми после представлениями и computed by полями. Вероятность появления глюка низкая, системы не нашел. Вылечилось после того как понавтыкал повсюду reconnect. Видать метаданные как-то недо-обновляются. Superserver 3.0.7. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2021, 16:47 |
|
Вопрос к тем, кто знаком с исходниками
|
|||
---|---|---|---|
#18+
ggreggory, у суперсервера 3.0 кэш метаданных раздельный по коннектам. как у классика и суперклассика. Не так как в суперсервер 2.5 (общий). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2021, 20:19 |
|
Вопрос к тем, кто знаком с исходниками
|
|||
---|---|---|---|
#18+
kdv ggreggory, у суперсервера 3.0 кэш метаданных раздельный по коннектам. как у классика и суперклассика. Не так как в суперсервер 2.5 (общий). Конвертор работает одним локальным коннектом. Много DDL: 1) убирает ключи 2) чистит тела триггеров и процедур 3) меняет character set у строковых доменов 4) делает update содержимого строковых blob 5) пересоздает строковые computed by 6) пересоздает UDF со строковыми параметрами 7) пересоздает view 8) возвращает ключи 9) возвращает тела триггеров и процедур Так вот на шаге 5) и 7) эпизодически появляются поля на WIN1251, коих уже не должно быть.... И не на каждой базе.... Делаешь реконнект после каждого шага - глюк уходит. Тесты были на супере. На классике или эмебедед не пробовал, других забот хватает, починилось и хорошо. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2021, 21:42 |
|
|
start [/forum/topic.php?fid=40&msg=40029083&tid=1560079]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
172ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 271ms |
total: | 559ms |
0 / 0 |