|
Проблема с загрузкой русскоязычных файлов в базу данных Postgres
|
|||
---|---|---|---|
#18+
Исходные данные: В папке C:\Program Files\PostgreSQL\9.6\data\tmp\00000 файл с русскими буквами https://yadi.sk/i/wfWOHgBrk1nY_w Командой из DataGrip удается прочитать но русские буквы не читаются (вместо букв вопросы) select pg_ls_dir from pg_ls_dir('tmp\00001'); https://yadi.sk/i/P31Q7VQT2R9VIg Если побывать читать из pgAdmin, то второй запрос ничего не возвращает Вопрос: как прочитать русские буквы из файлов? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2019, 13:54 |
|
Проблема с загрузкой русскоязычных файлов в базу данных Postgres
|
|||
---|---|---|---|
#18+
Тут опечатка C:\Program Files\PostgreSQL\9.6\data\tmp\00000 правильно так В папке C:\Program Files\PostgreSQL\9.6\data\tmp\00001 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2019, 13:56 |
|
Проблема с загрузкой русскоязычных файлов в базу данных Postgres
|
|||
---|---|---|---|
#18+
кодировки какие стоят, клиентская и серверная? show client_encoding; show server_encoding; ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2019, 14:20 |
|
Проблема с загрузкой русскоязычных файлов в базу данных Postgres
|
|||
---|---|---|---|
#18+
UTF-8 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2019, 19:39 |
|
Проблема с загрузкой русскоязычных файлов в базу данных Postgres
|
|||
---|---|---|---|
#18+
для начала попробуйте сделать этот запрос из psql ЗЫ проверил на линуксе — всё ок, в какой там кодировке на виндах имена файлов лежат? можно попробовать поиграть с кодировкой - попробовать cp1251/utf-16 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2019, 22:03 |
|
Проблема с загрузкой русскоязычных файлов в базу данных Postgres
|
|||
---|---|---|---|
#18+
black_sqlUTF-8 А какая кодировка текста внутри указанного файла? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2019, 14:31 |
|
Проблема с загрузкой русскоязычных файлов в базу данных Postgres
|
|||
---|---|---|---|
#18+
Упс, извиняюсь, не обратил внимания, что речь идёт о загрузке имени файла, а не его содержимого. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2019, 14:32 |
|
Проблема с загрузкой русскоязычных файлов в базу данных Postgres
|
|||
---|---|---|---|
#18+
Morruthв какой там кодировке на виндах имена файлов лежат? Лежат-то они в UTF-16, но получать из можно как в UTF-16, так и в текущей ANSI, зависит от использованного API. Кто ж знает что там у этого pg_ls_dir внутре?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2019, 14:35 |
|
Проблема с загрузкой русскоязычных файлов в базу данных Postgres
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovMorruthв какой там кодировке на виндах имена файлов лежат? Лежат-то они в UTF-16, но получать из можно как в UTF-16, так и в текущей ANSI, зависит от использованного API. Кто ж знает что там у этого pg_ls_dir внутре?.. Тот, кто исходники смотрел ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2019, 14:50 |
|
Проблема с загрузкой русскоязычных файлов в базу данных Postgres
|
|||
---|---|---|---|
#18+
Вот она: https://github.com/postgres/postgres/blob/REL_11_STABLE/src/backend/utils/adt/genfile.c#L443 readdir под виндами наверное собирается отсюда: https://github.com/postgres/postgres/blob/REL_11_STABLE/src/port/dirent.c#L77 Дальше вопрос кому-нибудь, что знаком с api виндов. Это не про меня. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2019, 16:32 |
|
Проблема с загрузкой русскоязычных файлов в базу данных Postgres
|
|||
---|---|---|---|
#18+
В приведённых исходниках имя файла получается в текущей кодовой странице ANSI, что вообще-то нехорошо. Если у ТС-а она выставлена не в 1251, то ему полный облом. В противном случае надо смотреть что со строкой в плане декларации и преобразования кодировок делает функция CStringGetTextDatum(). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2019, 14:49 |
|
Проблема с загрузкой русскоязычных файлов в базу данных Postgres
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovчто со строкой в плане декларации и преобразования кодировок делает функция CStringGetTextDatum(). Ничего. CStringGetTextDatum простой макрос Где PointerGetDatum ещё более простой макрос банального приведения типов а cstring_to_text - элементарный memcpy в отдельный буфер, всё вместе превращает C-style char* в postgresql тип text ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2019, 18:24 |
|
Проблема с загрузкой русскоязычных файлов в базу данных Postgres
|
|||
---|---|---|---|
#18+
Значит ТСу должно помочь тривиальное Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2019, 15:04 |
|
Проблема с загрузкой русскоязычных файлов в базу данных Postgres
|
|||
---|---|---|---|
#18+
При выполнении select convert(pg_ls_dir using windows_1251_to_utf8) from pg_ls_dir('tmp\00001'); Ошибка [2019-01-14 11:34:06] [42601] ERROR: syntax error at or near "using" [2019-01-14 11:34:06] Position: 26 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 09:34 |
|
|
start [/forum/topic.php?fid=53&msg=39756540&tid=1995410]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
92ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 286ms |
total: | 464ms |
0 / 0 |