Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Re: Как связать две таблицы по одинаковым полям / 4 сообщений из 4, страница 1 из 1
29.04.2015, 10:02
    #38948190
saikle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Re: Как связать две таблицы по одинаковым полям
Есть два файла 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
29.04.2015, 10:32
    #38948227
tadmin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Re: Как связать две таблицы по одинаковым полям
...
Рейтинг: 0 / 0
30.04.2015, 11:36
    #38949477
saikle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Re: Как связать две таблицы по одинаковым полям
Спасибо
Таблицу подключил как 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
30.04.2015, 11:41
    #38949490
tadmin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Re: Как связать две таблицы по одинаковым полям
saikleНагуглил, что проблема в том, что PG пытается читать файл с сервера. А он лежит на клиенте
Тогда делайте все на стороне приложения: мониторить изменения файла на диске, при изменении файла влить его через copy во временную таблицу, потом подать запрос на обновление
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Re: Как связать две таблицы по одинаковым полям / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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