Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PostgreSQL > pgsql and .xls


Автор: Likurgius 20.5.2008, 19:38
Здраствуйте.
 Нужна помощь, как прочитать xls файл или конвертировать в csv?
Используя соответственно pgsql(Postgre).
Буду благодарен за любые советы/ссылки/помощь.
По не зависящим от меня причинам, нельзя использовать нормальные технологии(Java, C/C++,C#)

C Уважением, Максим.

Автор: Magnifico 20.5.2008, 21:34
команда copy ... from ...

Код

copy tbl1
from 'C:\\files\\file.csv'
delimiter ';'

Автор: Likurgius 22.5.2008, 10:54
Я прошу прощения, но разве .xls и .csv это одно и то же??
мне требуется прочитать .xls, ну или конвертировать его в .csv

smile smile

Автор: Magnifico 22.5.2008, 11:15
можно сказать что одно и тоже  (набор данных)  ведь это в первую очередь нужно переброс данных )
в  Excel  можно сохранить в csv ,а  csv можно открыть  в Excel

Автор: Likurgius 22.5.2008, 12:58
ммм...да csv обработать действительно не проблема smile
надо уточнить, пользователь будет вводить именно .xls или все же .csv.(мысли вслух)

а напрямую работать с .xls я так понимаю нет возможности? Т.е..чтобы pgsql сам конвертировал xls -> csv.

спасибо за помощь.

Автор: Magnifico 22.5.2008, 13:51
платная (не пробвал)
EMS Postgresql Import   (Excel Access dbf  txt  csv)

Автор: RockClimber 30.5.2008, 14:47
Цитата(Magnifico @  20.5.2008,  21:34 Найти цитируемый пост)
команда copy ... from ...
Код
copy tbl1
from 'C:\\files\\file.csv'
delimiter ';'

А эта команда добавляет снизу строки или перезаписывает? И как она работает с ключами?

Автор: LSD 30.5.2008, 16:36
Цитата(RockClimber @  30.5.2008,  15:47 Найти цитируемый пост)
А эта команда добавляет снизу строки или перезаписывает? И как она работает с ключами?

Это фактически массовые insert (только оптимизированный по производительности).
Цитата(http://www.postgresql.org/docs/8.3/interactive/sql-copy.html)
COPY FROM will invoke any triggers and check constraints on the destination table. However, it will not invoke rules.

Автор: RockClimber 4.6.2008, 17:53
Вроде работает, но есть проблема.
когда подгружаю данные, содержащие русский текст, выдается ошибка:"invalid byte sequence for encoding "UTF8": 0xff"
Файл csv готовлю в Excel, пробовал создавать базу и с кодировкой UTF-8, и WIN1251, ничего не помогает. Или проблема в том, что Excel не сохраняет данные в UTF?

P. S.
Цитата

Это фактически массовые insert (только оптимизированный по производительности).

А есть такая же команда, но с перламутровыми пуговицами но только массовые update (т. е. перезапись определенных строк)?

Автор: LSD 5.6.2008, 12:23
Цитата(RockClimber @  4.6.2008,  18:53 Найти цитируемый пост)
когда подгружаю данные, содержащие русский текст, выдается ошибка:"invalid byte sequence for encoding "UTF8": 0xff"
Файл csv готовлю в Excel, пробовал создавать базу и с кодировкой UTF-8, и WIN1251, ничего не помогает. Или проблема в том, что Excel не сохраняет данные в UTF?

Цитата
Input data is interpreted according to the current client encoding, and output data is encoded in the the current client encoding, even if the data does not pass through the client but is read from or written to a file.

Установи правильную кодировку:
Код

set client_encoding = win1251;
show client_encoding;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)