powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Re: Как связать две таблицы по одинаковым полям
4 сообщений из 4, страница 1 из 1
Re: Как связать две таблицы по одинаковым полям
    #38948190
saikle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть два файла Users.csv и PC.csv Используются два разделителя: , и ;
В PG есть таблица users. Содержимое полей:
1. id_users
2. FIO (соответствует фио из csv файла user)
3. user_login (соответствует login из csv файла user)
4. Position (соответствует Должность из csv файла user)
5. telephone (соответствует телефон из csv файла user)
6. department (соответствует отдел из csv файла user)

В PG есть также таблица PC. Содержимое полей:
1. id
2. name (соответствует name из csv файла PC)
3. login (id_user из таблицы user)
4. IP адрес (соответствует IP из csv файла PC)
5. timelogon - время входа с учетёной записи (login) на этом PC (из поля name)

Нужно загружать csv файл в PG. И переодический сравнивать изменения в csv с PG. Если пользователь или ПК пропал из файла, то в базе проводить те же изменения.
Также есть общее поле у csv файлов user_login и login. Нужно сравнивать эти поля и если они одинаковы, то в поле login в PC (PG) вписать id_user. И соответственно, если пользователь пропал из файла, то удалять id_user.
Программу буду писать на delphi xe8 или delphi 7.
Меня интересуют возможности PG. В интернете много примеров по одноразовой загрузке. Но мне нужна полноценная односторонняя синхронизация
...
Рейтинг: 0 / 0
Re: Как связать две таблицы по одинаковым полям
    #38948227
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Re: Как связать две таблицы по одинаковым полям
    #38949477
saikle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо
Таблицу подключил как csv файл

CREATE SERVER users FOREIGN DATA WRAPPER file_fdw;

CREATE FOREIGN TABLE users_csv (
Position text,
Phone text,
Login text,
daparment text,
FIO text
) SERVER users
OPTIONS ( filename 'D:/users.csv', format 'csv' );

Select Postion, Phone, login, department, FIO from users_csv

SQL-состояние: 58Р01

Нагуглил, что проблема в том, что PG пытается читать файл с сервера. А он лежит на клиенте

Пытаюсь сменить путь командой ALTER FOREIGN TABLE users_csv OPTIONS (SET FILENAME 'D:/users.csv');
К этой команде нужно приписать STDIN (что файл на клиенте), а куда правильно написать? В интернете нет примеров, как прописать клиент в file_fdw
...
Рейтинг: 0 / 0
Re: Как связать две таблицы по одинаковым полям
    #38949490
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saikleНагуглил, что проблема в том, что PG пытается читать файл с сервера. А он лежит на клиенте
Тогда делайте все на стороне приложения: мониторить изменения файла на диске, при изменении файла влить его через copy во временную таблицу, потом подать запрос на обновление
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Re: Как связать две таблицы по одинаковым полям
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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