powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Проблема с кодировкой WIN1251
13 сообщений из 13, страница 1 из 1
Проблема с кодировкой WIN1251
    #39964743
Eter2020
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, коллеги!

Есть задача - загрузить информацию из XML (ЕГРЮЛ, если точнее) в базу на PSQL

Создана таблица:

Код: sql
1.
2.
3.
4.
5.
6.
CREATE TABLE test_xml (
  "Id" serial PRIMARY KEY,
  "INN" VARCHAR(255) NOT NULL,
  "NameOPF" VARCHAR(255) NOT NULL,
  "NameUL" VARCHAR(255) NOT NULL
);



Есть запрос:

Код: sql
1.
2.
3.
4.
5.
INSERT INTO test_xml
  SELECT (xpath('//row/@ИНН', x))[1]::text::int AS INN,
         (xpath('//row/@ПолнНаймОПФ', x))[1]::text::int AS NameOPF,
         (xpath('//row/@НаимЮЛПолн', x))[1]::text::int AS NameUL
  FROM unnest(xpath('//row', pg_read_file('D:\\EGRUL.XML')::xml)) x;



Результат запроса:

ERROR: ОШИБКА: could not parse XML document
DETAIL: line 1: Unsupported encoding windows-1251
<?xml version="1.0" encoding="windows-1251" ?><EGRUL ДатаВыг="2020-01-01"><СвЮЛ
^
SQL-состояние: 2200M

В каком направлении копать?

для справки: PostgreSQL 12, база, сервер и клиент на WIN1251
...
Рейтинг: 0 / 0
Проблема с кодировкой WIN1251
    #39964753
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пересохраните файл в utf8 и пропишите encoding="utf-8"
...
Рейтинг: 0 / 0
Проблема с кодировкой WIN1251
    #39964759
Eter2020
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Guzya,

Это было бы хорошее и рабочее решение, но к сожалению таких файлов 11684 штуки, общим весом 121 Гб.

Нужно другое решение.
...
Рейтинг: 0 / 0
Проблема с кодировкой WIN1251
    #39964787
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DETAIL: line 1: Unsupported encoding windows-1251
Это отвечает непосредственно libxml2. Про что сказано :
libxml2 has a set of default converters for the following encodings (located in encoding.c):

UTF-8 is supported by default (null handlers)
UTF-16, both little and big endian
ISO-Latin-1 (ISO-8859-1) covering most western languages
ASCII, useful mostly for saving
HTML, a specific handler for the conversion of UTF-8 to ASCII with HTML predefined entities like © for the Copyright sign.

More over when compiled on an Unix platform with iconv support the full set of encodings supported by iconv can be instantly be used by libxml. On a linux machine with glibc-2.1 the list of supported encodings and aliases fill 3 full pages, and include UCS-4, the full set of ISO-Latin encodings, and the various Japanese ones.

Видимо, учитывая наблюдаемую ошибку, на вашей платформе libxml2 не поддерживает такую кодировку. Что, конечно, не является ошибкой: парсеры XML обязаны поддерживать UTF8 и UTF16, а всякое прочее - если захотят.
...
Рейтинг: 0 / 0
Проблема с кодировкой WIN1251
    #39964795
Eter2020
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,

Спасибо, за разъяснение

Может есть рабочее решение этого вопроса? Авторство файлов у Налоговой, так что какие есть с такими и придется работать

Конвертировать при загрузке? Но тогда как? Каким инструментом пользоваться?
...
Рейтинг: 0 / 0
Проблема с кодировкой WIN1251
    #39964818
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Напишите скриптик, который будет делать, то, что я описал выше.
Вы на какой ОС работаете?
...
Рейтинг: 0 / 0
Проблема с кодировкой WIN1251
    #39965000
Eter2020
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Guzya,

На Win10

Подумываю на SQL Server от мелкомягких переползти, хотя ох как не хочется
Postgre роднее что-ли
...
Рейтинг: 0 / 0
Проблема с кодировкой WIN1251
    #39965054
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можете дать файлик для экспериментов?
...
Рейтинг: 0 / 0
Проблема с кодировкой WIN1251
    #39965066
Eter2020
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Guzya, держите

на удивление нашел до 150Кб остальные в среднем от 8 до 12 МБ
...
Рейтинг: 0 / 0
Проблема с кодировкой WIN1251
    #39965147
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал скрипт на Python

Посмотрите
...
Рейтинг: 0 / 0
Проблема с кодировкой WIN1251
    #39965148
Eter2020
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Guzya,

Вот это дело
Вот что значит, когда руки растут из нужного места!)
Огромейнейшее спасибо!!!
...
Рейтинг: 0 / 0
Проблема с кодировкой WIN1251
    #39965160
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы проверьте, что оно работает, а то мне особо не на чем было.
...
Рейтинг: 0 / 0
Проблема с кодировкой WIN1251
    #39965335
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eter2020
На Win10

Ставишь набор позиксовских утилит из магазина, а дальше всё сводится к тривиальному "iconv | sed". Первый перегонит кодировку данных, второй поменяет заголовок в соответствие этому.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Проблема с кодировкой WIN1251
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]