|
|
|
Re: Как связать две таблицы по одинаковым полям
|
|||
|---|---|---|---|
|
#18+
Есть два файла 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. В интернете много примеров по одноразовой загрузке. Но мне нужна полноценная односторонняя синхронизация ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2015, 10:02 |
|
||
|
Re: Как связать две таблицы по одинаковым полям
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2015, 10:32 |
|
||
|
Re: Как связать две таблицы по одинаковым полям
|
|||
|---|---|---|---|
|
#18+
Спасибо Таблицу подключил как 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 11:36 |
|
||
|
Re: Как связать две таблицы по одинаковым полям
|
|||
|---|---|---|---|
|
#18+
saikleНагуглил, что проблема в том, что PG пытается читать файл с сервера. А он лежит на клиенте Тогда делайте все на стороне приложения: мониторить изменения файла на диске, при изменении файла влить его через copy во временную таблицу, потом подать запрос на обновление ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 11:41 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38948227&tid=1998017]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 348ms |

| 0 / 0 |
