|
IBExpert 2019.12.25.1 - импорт из XLSX - проблемы с кодировкой
|
|||
---|---|---|---|
#18+
IBExpert 2019.12.25.1 Firebird-2.5.8-32 (но это видимо не важно). Через IBEscript загружал данные из xls в базу. Все работало. Файл xls вырос, и данные уперлись в дно (65536 записей). Перешел на офис поновее и формат файла пришлось по менять на xlsx -дно отдалилось примерно на миллион строк. Теперь проблема загрузить этот файл в базу. В IBExpert 2019.12.25.1 запускаю "Инструменты" - "Импорт данных" Файл отрывается, но все текстовые поля - "кракозябрами". Установка галочки "конвертировать строки из OEM в ANSI" характер кракозябр меняет, но все равно фигня. Предполагаю что в xlsx данные в юникоде и читать их нужно уже по другому. Это недоработка в IBExpert или я что-то не так делаю? Можно надеяться на исправление этой ошибки? И в IBESсript? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 10:58 |
|
IBExpert 2019.12.25.1 - импорт из XLSX - проблемы с кодировкой
|
|||
---|---|---|---|
#18+
Тут нет никакой ошибки. Данные отображаются "как есть", на импорт это не влияет. Хочешь видеть их как юникод - справа над сеткой превью есть соответствующая пипка. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 11:55 |
|
IBExpert 2019.12.25.1 - импорт из XLSX - проблемы с кодировкой
|
|||
---|---|---|---|
#18+
Ага, пипку увидел, и превью нормальными буквами получилось. Но получается что я прочитал из xlsx данные в юникоде а потом засунул их в поле win1251. У меня и база win1251 и коннект такой же. В каком месте можно перекодировать из юникода в win1251? Или нужно в таблице в в которую делается импорт, сделать поля юникодные, а потом уже оттуда кастить в другие поля как win1251? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 12:36 |
|
IBExpert 2019.12.25.1 - импорт из XLSX - проблемы с кодировкой
|
|||
---|---|---|---|
#18+
И кстати, при импорте была бы наверное уместна галка, по аналогии с существующей: [ ] конвертировать строки из OEM в ANSI [ ] конвертировать строки из Unicode в ANSI ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 12:39 |
|
IBExpert 2019.12.25.1 - импорт из XLSX - проблемы с кодировкой
|
|||
---|---|---|---|
#18+
База создана как Код: plsql 1. 2. 3. 4.
Коннект тоже как win1251. Если в мастере импорта сказать - создавай новую таблицу - то он ее создает, без дополнительного указания чарсета полей, они получаются дефолтные win1251, и туда пихается юникодные данные. Так и должно быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 12:49 |
|
IBExpert 2019.12.25.1 - импорт из XLSX - проблемы с кодировкой
|
|||
---|---|---|---|
#18+
fraks Коннект тоже как win1251. Если в мастере импорта сказать - создавай новую таблицу - то он ее создает, без дополнительного указания чарсета полей, они получаются дефолтные win1251, и туда пихается юникодные данные. Так и должно быть? Что подсовываешь, то и будет пихаться. Но не факт, что запихнется. Для импорта данных в utf8 чарсет коннекта должен быть тоже utf8, разумеется. Эксперт ничего конвертировать не будет, с этим прекрасно справляется сервер. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 14:03 |
|
IBExpert 2019.12.25.1 - импорт из XLSX - проблемы с кодировкой
|
|||
---|---|---|---|
#18+
fraks В каком месте можно перекодировать из юникода в win1251? Или нужно в таблице в в которую делается импорт, сделать поля юникодные, а потом уже оттуда кастить в другие поля как win1251? Сервер тебе перекодирует в win1251, если из utf8-коннекта ты будешь пихать utf8-данные в таблицу с полями win1251. Не нужно никакие юникодные поля городить, если они тебе не нужны. Но если у тебя в данных не только win1251 окажется, то получишь ошибку транслитерации. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2020, 14:06 |
|
IBExpert 2019.12.25.1 - импорт из XLSX - проблемы с кодировкой
|
|||
---|---|---|---|
#18+
IBExpert fraks В каком месте можно перекодировать из юникода в win1251? Или нужно в таблице в в которую делается импорт, сделать поля юникодные, а потом уже оттуда кастить в другие поля как win1251? Сервер тебе перекодирует в win1251, если из utf8-коннекта ты будешь пихать utf8-данные в таблицу с полями win1251. Не нужно никакие юникодные поля городить, если они тебе не нужны. Но если у тебя в данных не только win1251 окажется, то получишь ошибку транслитерации. Данных в UTF8 (в Excel) у меня вроде не было. Законнектился к базе как UTF8 и импортировал в таблицу с полями win1251. На определенной записи получил Malformed string. Посчитал что это именно тот случай - в исходных данных появился UTF8. Поскольку эта база у меня перевалочная - я загружают в нее данные из Excel только для того что бы по ним выполнить SQL-запросы и потом опять выгрузить в другие Excel - то решил что зачем мне бороться с перекодированием, проще базу и поля сделать UTF8. Сделал. Загружаю данные - опять 25, опять Malformed string. Лезу в указанную запись и нахожу там вместо строки формулу. Вместо "СКТ2" написана формула "=+B31347" Убираю формулу - файл грузится. Возможно и не требовалось переходить на UTF8, но уж ладно. Далее пришла мысль, что раз я при импорте указываю маппинг полей, то зачем я пересохраняю исходный файл с другими именами полей, пригодными для DBF. Оказалось что и тут c UTF проблемка. Имена полей видимо тоже в UTF8. Однако что странно, в предпросмотре данные выглядят закорючками пока пипку не нажмешь, но заголовки колонок (имена полей, первая строка в Excel-файле) показываются всегда правильно. Идем на вкладку маппинга - а там они же закорючками. И в IBEBlock - тоже закорючки. Какая-то не очень ровная картинка получается. Одни и те же данные где-то отображаются сразху правильно, где-то требуют пипки, а где-то (в маппинге) персональной пипки нет, а пипка от предпросмотра на маппинг не распространяется. И допустим, для предпросмотра сделается доп.пипка, а что в IBEBlock произойдет? Ничего? Или можно исходник сохранить в UTF8 и писать сразу понятные имена? Могут скрипты быть в UTF8? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2020, 00:22 |
|
IBExpert 2019.12.25.1 - импорт из XLSX - проблемы с кодировкой
|
|||
---|---|---|---|
#18+
fraks Загружаю данные - опять 25, опять Malformed string. Значит, в какой-то ячейке не utf8. fraks Какая-то не очень ровная картинка получается. Одни и те же данные где-то отображаются сразху правильно, где-то требуют пипки, а где-то (в маппинге) персональной пипки нет, а пипка от предпросмотра на маппинг не распространяется. Я же уже сказал: предпросмотр на сам импорт никак не влияет. fraks И допустим, для предпросмотра сделается доп.пипка, а что в IBEBlock произойдет? Ничего? Или можно исходник сохранить в UTF8 и писать сразу понятные имена? Могут скрипты быть в UTF8? Возьми и проверь, что произойдет. Ничто не мешает создать таблицу заранее с нужными именами полей и затем импортировать туда данные. Маппинг по индексу делай, а не по имени. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2020, 13:06 |
|
IBExpert 2019.12.25.1 - импорт из XLSX - проблемы с кодировкой
|
|||
---|---|---|---|
#18+
IBExpert fraks Загружаю данные - опять 25, опять Malformed string. Значит, в какой-то ячейке не utf8. Я нашел эту ячейку: fraks Загружаю данные - опять 25, опять Malformed string. Лезу в указанную запись и нахожу там вместо строки формулу. Вместо "СКТ2" написана формула "=+B31347" Убираю формулу - файл грузится. ИМХО тут не с юникодом проблема. IBExpert fraks Какая-то не очень ровная картинка получается. Одни и те же данные где-то отображаются сразху правильно, где-то требуют пипки, а где-то (в маппинге) персональной пипки нет, а пипка от предпросмотра на маппинг не распространяется. Я же уже сказал: предпросмотр на сам импорт никак не влияет. fraks И допустим, для предпросмотра сделается доп.пипка, а что в IBEBlock произойдет? Ничего? Или можно исходник сохранить в UTF8 и писать сразу понятные имена? Могут скрипты быть в UTF8? Возьми и проверь, что произойдет. Ничто не мешает создать таблицу заранее с нужными именами полей и затем импортировать туда данные. Маппинг по индексу делай, а не по имени. Весьма неудобно отлаживать эти скрипты из-за невнятной диагностики. То ошибка без указания в где конкретно, то ошибка целиком на блок в несколькько экранов, то неверная диагностика. Единственный метод отладки - закомментаривать код до пропадения ошибок и потом постепенно его раскомментаривать. Да и то, каменты не в любое место можно втыкать. Например комментирование -- внутри многострочной команды не работает. Много времени потерял из-за этого: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
DATA - это имя первого поля в маппинге. Я перевожу диагностику как ошибка при указании имени поля/индекса поля в источнике. Долго искал в чем проблема, как задать имя поля, что там с кодировками... В то время как я тупо ошибся в путях и ошибка должна была быть: "файл не найден". ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2020, 10:09 |
|
|
start [/forum/topic.php?fid=42&msg=39911952&tid=1598686]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
179ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 250ms |
total: | 524ms |
0 / 0 |