Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Взаимодействие Postgre и 1 с / 17 сообщений из 17, страница 1 из 1
11.04.2016, 13:47
    #39212524
olegon7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимодействие Postgre и 1 с
Всем привет! Я 1с -ник , в субд Postgre новичок.

В Postgre хранятся данные об абонентах - таблица Kartab_askue(далее картаб) и оплаты таблица Kartkvgd_askue(далее картвгд).

Мне надо выбрать определенные поля из таблиц так что бы из картвгд попадали оплаты за последний период, а из картаба все абоненты(поле лицевой счет уникально в картабе ). Соединяю таблица по поле картаб.


В 1 с использую код, работая через odbc драйвер 32 разрядный(создал источник)
код 1 с
Код: css
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Сервер="*****";
	Порт="****";
	База="*****";
	Пользователь="*****";
	Пароль="******";
	
	Connection = Новый COMОбъект("ADODB.CONNECTION");
	Попытка 
		
	Connection.Open("Driver={PostgreSQL Unicode};data source=PostgreSQL35W;Server="+Сервер+";Port=" + 
							   Порт+";Database="+База+";Uid="+Пользователь+";Pwd="+Пароль+";STMT="+"utf8");
		   
   Исключение 
       Сообщить("Ошибка соединения:"+ОписаниеОшибки()); 
       Возврат; 
   КонецПопытки; 
  
   
   RecordSet = Новый COMОбъект("ADODB.Recordset");
  попытка
   ТекстЗапросаMYSQL="запрос";

 RecordSet.Open(ТекстЗапросаMYSQL,Connection );
		
		
	исключение
		Сообщить ("Проблемы с выполнением запроса");
		Сообщить(ОписаниеОшибки());
		Возврат;
	КонецПопытки;



Запрос написал следующий
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
select t2.yearmon,
t2.lic_sch,
t2.data_new,
kartab_askue.lic_sch,
kartab_askue.data_kon,
kartab_askue.date_kon,
kartab_askue.base 
from 
kartab_askue Left JOIN (select t1.yearmon,
t1.lic_sch,
kartkvgd_askue.data_new
from 
(select MAX(kartkvgd_askue.yearmon) yearmon,
kartkvgd_askue.lic_sch
from 
kartkvgd_askue
where kartkvgd_askue.del=0
GROUP BY kartkvgd_askue.lic_sch) t1 inner join kartkvgd_askue
on t1.lic_sch=kartkvgd_askue.lic_sch and t1.yearmon=kartkvgd_askue.yearmon) t2
on kartab_askue.lic_sch=t2.lic_sch
where kartab_askue.del=0



Субд хочу использовать как внешний источник .
1. создать таблицу где будут хранится результат этого запроса
2. Из этой таблицы выбрать все лицевые счета передать на 1 с -1с на веб-сервис оттуда на 1 с - и снова на Postgre,
Записать в таблицу новые поля (данные из веб-сервиса) Update
3.Сделать обработку этой таблицы (т.е выборка по удовлетворяющим условиям, осталье записи мусор) и результат выгрузить в новую таблицу (Искомые данные).
...
Рейтинг: 0 / 0
11.04.2016, 14:04
    #39212536
g2099599
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимодействие Postgre и 1 с
olegon7,

А вопрос-то в чем?!
...
Рейтинг: 0 / 0
11.04.2016, 14:08
    #39212541
olegon7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимодействие Postgre и 1 с
g2099599,

как создать таблицу и вставить туда результат моего запроса?
по каким полям посоветуете ключи
записей будет примерно 60 тыс ежемесячно, таблица будет накапливаться.
...
Рейтинг: 0 / 0
11.04.2016, 14:20
    #39212551
olegon7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимодействие Postgre и 1 с
yearmon (дата последней оплаты)
lic_sch (лицевой счет)
data_new (показания последующие)
data_kon (показания последнего обхода контроллера)
date_kon (дата последнего обхода)
base (рэс район)
...
Рейтинг: 0 / 0
11.04.2016, 14:22
    #39212553
olegon7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимодействие Postgre и 1 с
Запросы на выборку умею делать
а на вставку изменения очень мало опыта
...
Рейтинг: 0 / 0
11.04.2016, 14:41
    #39212586
g2099599
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимодействие Postgre и 1 с
...
Рейтинг: 0 / 0
11.04.2016, 14:55
    #39212615
olegon7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимодействие Postgre и 1 с
g2099599,

создавать таблицу я буду вручную и один раз. Пэтому create table as не подойдет
ежемесячно туда будут падать 60 тыс записей

может есть у кого пример хранимой процедуры,
которая пишет результат запроса в таблицу?
...
Рейтинг: 0 / 0
11.04.2016, 15:44
    #39212744
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимодействие Postgre и 1 с
olegon7,

Код: sql
1.
2.
3.
4.
5.
6.
CREATE TABLE my_new_table AS
SELECT /* запрос полностью */
 WHERE 1=0; /* "выключаем" записи, т.е. только определение таблицы */

INSERT INTO TABLE my_new_table
SELECT /* тот же запрос, без ограничений */
...
Рейтинг: 0 / 0
11.04.2016, 16:11
    #39212782
olegon7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимодействие Postgre и 1 с
vyegorov,

спасибо
только во втором случае без table

Я работаю с Navicat там куча доп настроек

может кто подскажет как хранимую процедуру( если она на Постгре) написать
с запросом
...
Рейтинг: 0 / 0
11.04.2016, 16:21
    #39212804
olegon7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимодействие Postgre и 1 с
vyegorov,

еще такой момент в новой таблице создалось поле ай ди оно уникально

второй запрос при повторном выполнении ругается, оно и понятно ай ди повторяется
как написать что бы автоматом проставляла айдишник при заполнии записей в новую таблицу
...
Рейтинг: 0 / 0
11.04.2016, 17:42
    #39212906
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимодействие Postgre и 1 с
olegon7,

Я бы переделал первичный ключ: вместо просто ID составной, скажем load_ts (с `DEFAULT now()`) + ID.
...
Рейтинг: 0 / 0
12.04.2016, 08:42
    #39213185
olegon7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимодействие Postgre и 1 с
vyegorov,

можно поподробнее по поводу составного первичного ключа
и `DEFAULT now()`
...
Рейтинг: 0 / 0
12.04.2016, 09:23
    #39213215
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимодействие Postgre и 1 с
olegon7можно поподробнее по поводу составного первичного ключа и `DEFAULT now()`
Можно посмотреть что у вас уже имеется?
...
Рейтинг: 0 / 0
12.04.2016, 09:47
    #39213237
olegon7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимодействие Postgre и 1 с
vyegorov,

1.Мне надо спроектировать таблицу
с полями
id AUTO_INCREMENT
date1_record ('default ???) первое число месяца когда произошла запись в таблицу - есть ли вообще такая функция???
date_record ('default now()) дата когда произошла запись
я так понимаю по первым трем полям можно сделать составной индекс

lic_sch
fam
name
otch
kod_st
kod_tn
yearmon
data_new
data_kon
date_kon
...
Рейтинг: 0 / 0
12.04.2016, 11:57
    #39213439
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимодействие Postgre и 1 с
olegon7,

Если вам требуется ключ SERIAL ( это так в Postgres'е называется ), то каким образом у вас возникают ошибки уникальности? Оставляйте это поле пустым при вставке и всё будет.

Первое число месяца есть усечение даты или точки до заданной размерности.

Умолчательные выражения указываются при создании таблицы .
...
Рейтинг: 0 / 0
12.04.2016, 14:56
    #39213699
olegon7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимодействие Postgre и 1 с
vyegorov,

еще один вопрос

сформирую таблицу с полями и заполню данными в postgre
лиц_сч
поле1
поле2

...
полен

на 1 с получаю массив из данных в формате json с полями- лиц_сч, поле1, поле2 .... полен

как оптимальнее проапдейтить таблицу в postgre по полю лиц_сч, т.е если лицевые счета совпадают , то заполнить поля поле1, поле2
новыми значениями
если нет, то просто пропустить эти поля
...
Рейтинг: 0 / 0
12.04.2016, 15:45
    #39213789
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взаимодействие Postgre и 1 с
olegon7,

База называется PostgreSQL, можно сократить до Postgres. Используйте имя правильно.

Используйте UPDATE ... FROM , что-то типа:

Код: sql
1.
2.
3.
4.
UPDATE tab
   SET f1 = json.f1, f2 = json.f2, ...
  FROM (SELECT ... ) json
 WHERE tab.acc_id=json.acc_id;


В SET-списке префикс изменяемой таблицы использовать не надо !
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Взаимодействие Postgre и 1 с / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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