|
COPY и SERIAL
|
|||
---|---|---|---|
#18+
Приветствую всех! Исходная задача. Регулярно (с периодичностью 2 раза в сутки) необходимо получать данные, снимаемые с датчиков технологических процессов производства. Полученные данные нужно сохранить в таблицах БД. Как это работает. Данные снимаются программой, написанной для терминалов, и к моему серверу БД никакого отношения не имеющей. Ребята, писавшие в свое время данную программу, готовы ее доработать таким образом, чтобы она выкладывала по ftp-протоколу эти данные с нужной периодичностью в файл (обычный, flat). Планир(овал?)ую реализовать регулярную заливку полученных файлов в таблицы с помощью cron командой COPY. Но в данном решении есть подводные камни - автоинкрементные столбцы таблиц. Так как сама по себе команда COPY не дает возможности указывать набор атрибутов, оперируя в каждом случае всей таблицей, то рассинхронизация уникальных идентификаторов, генерируемых с помощью последовательностей, обеспечена. Соответственно, в лучшем случае по завершении COPY я получу сбитое значение nextval, в худшем - команда вообще не пройдет из-за дублирующихся ключей (в любом случае, оба варианта заведомо неприемлемы, поэтому что хуже, а что лучше - это все условно-относительно). Заставлять программистов АСУТП генерировать файлы с готовыми наборами SQL-команд мне пока не хочется :), изначально я расчитывал на простые текстовые файлы данных с разделителями. Есть какие-нибудь идеи, как обойти проблему? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2003, 09:21 |
|
COPY и SERIAL
|
|||
---|---|---|---|
#18+
Возможно, как выход: файл -> временная таблица -> основная таблица. Но, возможно, проблему можно решить более изящно (или эффективно).. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2003, 09:28 |
|
COPY и SERIAL
|
|||
---|---|---|---|
#18+
В команде COPY можно указывать список полей таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2003, 11:48 |
|
COPY и SERIAL
|
|||
---|---|---|---|
#18+
2 LeXa NalBat Версия PG? 7.2.1., по-моему, не позволяет Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2003, 11:55 |
|
COPY и SERIAL
|
|||
---|---|---|---|
#18+
Версия 7.3. В 7.2 этого действительно не было. :( ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2003, 12:10 |
|
COPY и SERIAL
|
|||
---|---|---|---|
#18+
OK, спасибо! Сам, наверное, и не полез бы смотреть наличие нужной мне функциональности в более поздних версиях :) Теперь, пожалуй, окончательного релиза 7.4 дожидаться не буду (планировал дотянуть) :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2003, 12:57 |
|
COPY и SERIAL
|
|||
---|---|---|---|
#18+
Думаю что более быстрого решени чем 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' ] ] ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2003, 14:49 |
|
|
start [/forum/topic.php?desktop=1&fid=53&tid=2008049]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 317ms |
total: | 471ms |
0 / 0 |