powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / dbf2pg или война с кодировкой ASCII (DOS charset)
13 сообщений из 13, страница 1 из 1
dbf2pg или война с кодировкой ASCII (DOS charset)
    #34181494
Фотография Степан H.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Постала предо мной задача. Заливать в PG из DBF файла
Текст в DBF файле в кодировке -> ASCII (DOS charset)


1. проставил библиотеку contrib

2. соорудил вот такое вот

dbf2pg -d mybase -t mytable -F SQL_ASCII -T WIN1251 /tmp/1.dbf

Все как-бы отличо заливает в базу,
НО!!!!!!

в строковых полях в таблице PG после заливки вот такие вот крокозябры ->>> ‘‹ћ‘Ђђ I I

Здается мне проблемс в ключах -F SQL_ASCII -T WIN1251 ???


Раранее спасибо!!
...
Рейтинг: 0 / 0
dbf2pg или война с кодировкой ASCII (DOS charset)
    #34182041
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если мне не изменяет память, то вместо SQL_ASCII вам надо использовать ALT
...
Рейтинг: 0 / 0
dbf2pg или война с кодировкой ASCII (DOS charset)
    #34182829
Фотография Степан H.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тоже не работает ...

Код: plaintext
dbf2pg -d mybase -t mytable -F ALT -T WIN1251 /tmp/ 1 .dbf

да и вообще ... любая конфигурация в переметрах -F -T абсолютно ничего не меняет.

Начинаю понимать что проблема, возможно, не в этом ...

Неужели с этим никто не сталкивался ?
...
Рейтинг: 0 / 0
dbf2pg или война с кодировкой ASCII (DOS charset)
    #34184268
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сталкивался но последний раз это было лет пять назад.
1) В заголовке dbf-ов сляпанных досовой лисичкой уже было поле charset.
Проверить это можно скажем дельфийским DbD Поправить им же. Подобные грабли были и в древними db-шниках.
2) Так как CONTRIB/DBASE юзает iconv следует сделать в шелле iconv -l | grep 866 В результате
должна быть строчка вроде "866 CP866 IBM866 CSIBM866"! ;)
3) Сейчас вспомнилось что год назад я опять вынужден был выдирать данные из dbf-ников
и когда contrib/dbf сначала не собрался (как обычно не нашел либ) я просто установил порт /usr/ports/databses/dbf
У него есть параметр --noconv. Потом самописным фильтром выкусываем ненужное (CREATE TABLE и проч) и отдаем iconv а затем psql.
Если в твоем случае речь идет про M$Win - IMHO скорейший выход delphi+ZDO.
...
Рейтинг: 0 / 0
dbf2pg или война с кодировкой ASCII (DOS charset)
    #34184824
Фотография Степан H.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо
Shweik

2-й раз приходишь на выручку.

Дело в том что я как раз в процессе отрыва от WIN32 + Delphi +ZEOS... там бы этот проблемс мигом бы решил.

У меня
dbf приходят на FreeBSD ->Postfix, дальше скриптом выискиваются и конвертятся в PG. очень не хочу чтоб в этом параде примало участие еще одно звено, т.к. процес должен быть максимально автоматичным и участие еще одного звена понизит надежность.

Вот ZemA посоветовал использовать кодировку ALT, спасибу ему за это, все получается если база изначально создана с кодировний ALT ...
у меня WIN. Менять нельзя.

Теперь вот пытаюсь разобраться в своих советах, но так как я новенький не только в GP но еще и в BSD :-) это займет времице немалое. Не хочется просто тратить время зря, на сооружение волосипеда, если, он, возможно уже предусмотрен в тех вещах, которые я уже использую.

Спасибо.
...
Рейтинг: 0 / 0
dbf2pg или война с кодировкой ASCII (DOS charset)
    #34184884
Фотография Степан H.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот пробывал еще так

Код: plaintext
iconv -c -f CP866 -t CP1251 /tmp/ 1 .dbf > /tmp/ 2 .dbf

вроде как конвертит
но опять НО !!!
имена полей коверкает нешуточно,
dbf2pg "хавать" отказывается .....
...
Рейтинг: 0 / 0
dbf2pg или война с кодировкой ASCII (DOS charset)
    #34185192
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробовать создать базу в той же кодировке, что и dbf, залить, сделать дамп, создать базу в 1251 залить дамп, хз прокатит или нет, не пробовал
...
Рейтинг: 0 / 0
dbf2pg или война с кодировкой ASCII (DOS charset)
    #34186650
Jelis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Превращаешь dbf в sql не меняя кодировки, а затем перекодируешь это с помощью iconv (просто dbf лучше не трогать).
Если конвертить так в UTF-8 то обычно проблемм нету.
...
Рейтинг: 0 / 0
dbf2pg или война с кодировкой ASCII (DOS charset)
    #34186852
Фотография Степан H.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПревращаешь dbf в sql не меняя кодировки, а затем перекодируешь это с помощью iconv (просто dbf лучше не трогать).

Тогда лучше в TXT
потом iconv
потом COPY

а чем лучше сделать DBF to TXT ?
но вот этот вопрос уже не по теме.
...
Рейтинг: 0 / 0
dbf2pg или война с кодировкой ASCII (DOS charset)
    #34186872
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Степан H.
а чем лучше сделать DBF to TXT ?
но вот этот вопрос уже не по теме.
обычно я делал это excel'ем, благо он всегда под рукой, как правило
...
Рейтинг: 0 / 0
dbf2pg или война с кодировкой ASCII (DOS charset)
    #34187212
Фотография Степан H.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ээээ-х!!
Автоматизация ПОЛНАЯ нужна. И надежная придачу.
Если найду ответ. Обязательно выложу.
...
Рейтинг: 0 / 0
dbf2pg или война с кодировкой ASCII (DOS charset)
    #34187637
landy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
perl DBI DBD-XBase DBD-Pg попробовать?
...
Рейтинг: 0 / 0
dbf2pg или война с кодировкой ASCII (DOS charset)
    #34188017
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Степан H. авторПревращаешь dbf в sql не меняя кодировки, а затем перекодируешь это с помощью iconv (просто dbf лучше не трогать).

Тогда лучше в TXT
потом iconv
потом COPY

а чем лучше сделать DBF to TXT ?
но вот этот вопрос уже не по теме.
...................

Вот привожу пример одного из мини-велосипедов
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
#------------------------------------------------------------------------------
#!/bin/sh
...................
for i in doc*.rar
 do
 unrar x -inul -y -plfgjikbdsdctyf $i;  
 fndbf=`echo $i | sed 's/rar/dbf/g'`;
 fnsql=`echo $i | sed 's/rar/sql/g'`;
 dbf --noconv --trim b --sql - $fndbf  | sed 's/drop table -/--/g'  \
 | perl -pe "s/CREATE TABLE/\/\*/gs; s/\)\;/\*\//gs; s/\'\*\//\'\)\;/gs; s/INTO 
-/INTO docs/g" \
 | /usr/ubin/866xkoi8 |  $PSQL -U iebank ebank ;
 rm $fndbf;
done
rm *.rar
#------------------------------------------------------------------------------
Назначение сего дела просто - по почте валят упакованные rar-ом dbfки
Я выкусил с того места где почта уже получена вложения вырезаны мы их распаковываем и пихваем в stdin /usr/ports/databases/dbf фильтруем ненужное и сконвертировали в нужную кодировку инсертим в базу.
2landy и всем знающим perl :
Скрипт однозначно коряв (писалось в течении ~10 минут ) работает больше года и будет работать
пока банк не почешет репу и не предложит чего-то другое, или я выкрою полчаса чтобы
вдумчиво перекроить все на чистом пЁрле.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / dbf2pg или война с кодировкой ASCII (DOS charset)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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