Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / COPY и SERIAL / 7 сообщений из 7, страница 1 из 1
13.11.2003, 09:21
    #32322407
Konrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COPY и SERIAL
Приветствую всех!

Исходная задача. Регулярно (с периодичностью 2 раза в сутки) необходимо получать данные, снимаемые с датчиков технологических процессов производства. Полученные данные нужно сохранить в таблицах БД.

Как это работает. Данные снимаются программой, написанной для терминалов, и к моему серверу БД никакого отношения не имеющей. Ребята, писавшие в свое время данную программу, готовы ее доработать таким образом, чтобы она выкладывала по ftp-протоколу эти данные с нужной периодичностью в файл (обычный, flat).

Планир(овал?)ую реализовать регулярную заливку полученных файлов в таблицы с помощью cron командой COPY. Но в данном решении есть подводные камни - автоинкрементные столбцы таблиц. Так как сама по себе команда COPY не дает возможности указывать набор атрибутов, оперируя в каждом случае всей таблицей, то рассинхронизация уникальных идентификаторов, генерируемых с помощью последовательностей, обеспечена. Соответственно, в лучшем случае по завершении COPY я получу сбитое значение nextval, в худшем - команда вообще не пройдет из-за дублирующихся ключей (в любом случае, оба варианта заведомо неприемлемы, поэтому что хуже, а что лучше - это все условно-относительно).

Заставлять программистов АСУТП генерировать файлы с готовыми наборами SQL-команд мне пока не хочется :), изначально я расчитывал на простые текстовые файлы данных с разделителями.

Есть какие-нибудь идеи, как обойти проблему?
...
Рейтинг: 0 / 0
13.11.2003, 09:28
    #32322421
Konrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COPY и SERIAL
Возможно, как выход: файл -> временная таблица -> основная таблица. Но, возможно, проблему можно решить более изящно (или эффективно)..
...
Рейтинг: 0 / 0
13.11.2003, 11:48
    #32322670
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COPY и SERIAL
В команде COPY можно указывать список полей таблицы.
...
Рейтинг: 0 / 0
13.11.2003, 11:55
    #32322689
Konrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COPY и SERIAL
2 LeXa NalBat
Версия PG?

7.2.1., по-моему, не позволяет

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
db=# \h copy
Команда:     COPY
Описание: copy data between files and tables
Синтаксис:
COPY [ BINARY ] table [ WITH OIDS ]
    FROM { 'filename' | stdin }
    [ [USING] DELIMITERS 'delimiter' ]
    [ WITH NULL AS 'null string' ]
COPY [ BINARY ] table [ WITH OIDS ]
    TO { 'filename' | stdout }
    [ [USING] DELIMITERS 'delimiter' ]
    [ WITH NULL AS 'null string' ]
...
Рейтинг: 0 / 0
13.11.2003, 12:10
    #32322734
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COPY и SERIAL
Версия 7.3. В 7.2 этого действительно не было. :(
...
Рейтинг: 0 / 0
13.11.2003, 12:57
    #32322849
Konrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COPY и SERIAL
OK, спасибо! Сам, наверное, и не полез бы смотреть наличие нужной мне функциональности в более поздних версиях :)

Теперь, пожалуй, окончательного релиза 7.4 дожидаться не буду (планировал дотянуть) :)
...
Рейтинг: 0 / 0
13.11.2003, 14:49
    #32323100
Shweik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COPY и SERIAL
Думаю что более быстрого решени чем COPY не найти -
особенно если файл на вход тебе генерит программа с железки, а
не оператор, путающий тройки с девятками 8)) .
PostgreSQL 7.3 Documentation:
Name
COPY -- copy data between files and tables
Synopsis
COPY table [ ( column [, ...] ) ]
FROM { 'filename' | stdin }
[ [ WITH ]
[ BINARY ]
[ OIDS ]
[ DELIMITER [ AS ] 'delimiter' ]
[ NULL [ AS ] 'null string' ] ]
COPY table [ ( column [, ...] ) ]
TO { 'filename' | stdout }
[ [ WITH ]
[ BINARY ]
[ OIDS ]
[ DELIMITER [ AS ] 'delimiter' ]
[ NULL [ AS ] 'null string' ] ]
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / COPY и SERIAL / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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