Вопросы с тегами [postgresql]

0

голосов
0

ответ
18

Просмотры

Как написать еще один запрос в функции IN при разметке

У меня есть 2-х местные Докеры-10.7 PostgreSQL сервера настройки. На моей горячей Например, у меня есть огромный стол, который я хотел разделить по дате (я достиг этого). Данные из секционированной таблицы (Давайте назовем его PART_TABLE) хранится на другом сервере, только PART_TABLE_2019 хранится на HOT экземпляре. И здесь возникает проблема. Я не знаю, как разделить 2 другие таблицы, которые имеют внешние ключи от PART_TABLE, основанные на FK. PART_TABLE и TABLE2_PART оба хранятся на HOT экземпляре. Я думал, что-то вроде этого: создание внешней таблицы TABLE2_PART_2019 раздел TABLE2_PART для значений в (выберите UUID из PART_TABLE_2019); Но запрос не работает, и я не знаю, если это хорошая идея (производительность мудрая и логически). Позвольте мне сказать, что я могу решить эту проблему либо функции или скрипта и т.д.
Dimitrije Mitic
0

голосов
0

ответ
3

Просмотры

Can I enable PointField in django without admin on windows?

Я использую мой настольный ПК (Windows 10) в моей среде разработки. Мне нужно добавить географические координаты к одному из моих таблиц. PostgreSQL имеет тип точки, и, кажется, что Джанго эквивалентная модель PointField Я пробовал: от django.contrib.gis.db.models импорта PointField ... класс ... место = PointField (пустой = True) и я получаю следующее сообщение об ошибке сообщение: django.core.exceptions.ImproperlyConfigured: не удалось найти библиотеку GDAL (пробовал "gdal202", "gdal201", "gdal20", "gdal111", "gdal110", "gdal19"). Установлен ли GDAL? Если да, то попробуйте установить GDAL_LIBRARY_PATH в настройках. Кажется, мне нужно установить библиотеку GDAL библиотеку. Так что я попытался пип установить библиотеку GDAL --user, и я получил следующее сообщение об ошибке: ошибка: Microsoft Visual C ++ 14,0 требуется. Получить его "
Granny Aching
1

голосов
2

ответ
45

Просмотры

Обновление рассчитываемая полей

Поэтому у меня есть 2 таблицы. проекты ID: Integer, рейтинг PK: Float project_counters PROJECT_ID: Integer expires_at: DateTime значение: Float Есть ли способ, чтобы написать запрос, который будет обновлять все проекты записи настройки рейтинга на сумму значений на соответствующие счетчики, которые имеют expires_at набор в будущее?
Almaron
1

голосов
2

ответ
28

Просмотры

Repetitive Postgres updates of arrays leading to bloat?

Я бегу сценарий Python, который обрабатывает данные временных рядов для ряда различных метрик, а затем записывает результаты в базу данных Postgres. Временные ряды предполагают 40 эпох, которые хранятся в реальной колонке [40] массива в базе данных. При написании выходов для всех 40 эпох к столу в одном кадре (пакетное обновление по всем строкам), казалось, все отлично работает. т.е. ОБНОВЛЕНИЕ my_table SET arr_col_1 = {1, 2, 3, ... 40}, arr_col_2 = {1, 2, 3, ... 40}, ... arr_col_90 = {1, 2, 3, ... 40 }; Тем не менее, итеративно записи результатов соответствующих эпох каждой позиции в массиве, кажется грызть все свободное пространство на жестком диске, например, UPDATE my_table SET arr_col_1 [1] = 1, arr_col_2 [1] = 1, ... arr_col_90 [1] = 1; UPDATE my_table SET arr_col_1 [2] = 2, arr_col_2 [2] = 2, ... arr_col_90 [2] = 2; - повтор х 38 раз больше Причины итеративной стратегии для размещения большого количеств строк, для которых результаты для 40 эпох не помещаются в память одновременно. Насколько мне известно, UPDATE запросы будут удалены и переписать данные строки в определенных ситуациях, но я не ясно, когда это происходит, и как это возможно, относится к массивам. Есть ли способ, чтобы итерационно обновлять массивы через большое количество строк, не приводя к раздуванию базы данных?
songololo
0

голосов
0

ответ
21

Просмотры

Looping through 3 different SQL results

I need to loop through 3 results of SQL queries. The problem is that it's only bringing the fist result, instead of all of them. exports.rewardsNotifications = function() { var now = new Date() var hourUTC = now.getUTCHours() if (hourUTC { return t.any(`SELECT customer.customer_id, customer.phone_number, customer.place_group_id, customer.state, MAX(visit_date_only) AS last_visit, COUNT(visit_date) AS visit_count FROM VISITS INNER JOIN customer ON visits.customer_id = customer.customer_id AND visits.place_group_id = customer.place_group_id WHERE customer.state = 'on' GROUP BY customer.customer_id`).then(function(visitsData) { for(var i=0; i
MCM
0

голосов
0

ответ
5

Просмотры

Как использовать Из пункта в заявлении PostgreSQL Update

Я уверен, преобразование процедуры SQL хранится в хранимой функции PostgreSQL. В этой хранимой функции внутри Update есть Из пункта. Я хочу знать, как использовать Изнутри Update? Потому что я получаю ошибку имя таблицы "учетную запись" задан несколько раз CREATE OR REPLACE FUNCTION ETL_Insert_ModifyData (INSTID числовой) ВОЗВРАТ недействительного LANGUAGE 'SQL' AS $$ --Account UPDATE счета SET namount = stg_account.namount, slocation = stg_account.sLocation, ndept_id = stg_account.ndept_id, account.naccount_cpc_mapping_id = stg_account.naccount_cpc_mapping_id со счета INNER JOIN stg_account ON account.naccount_id = stg_account.naccount_id INNER JOIN отдела по stg_account.ndept_id = отдел.
SpringUser
1

голосов
1

ответ
338

Просмотры

Как я могу знать, какой запрос занимает много времени, во время работы функции Postgres?

На самом деле я бегу функцию в Postgres, которая занимает 1123 + мс для выполнения функции. Эта функция состоит из вызова других функций и имеет много запроса для выполнения. Как я могу знать, какой запрос виновница для медленного выполнения функции. Я видел . выберите * от pg_stat_activity; дать выход текущего выполняемого процесса. Может можно получить индивидуальное время запроса во время выполнения функции Postgres? Я знаю, что многие говорят регистрировать время запроса в базе данных, вставки, но есть какой-либо метод в Postgres, так что я могу получить время, принимая по каждому запросу. Кроме того, есть ли способ без изменения конфигурационного файла в Postgres, потому что я не хочу, чтобы перезапустить Postgres. Если нет, то другое решение можно только приветствовать. Благодарю.
Himanshu sharma
1

голосов
0

ответ
288

Просмотры

ОШИБКА: отсутствует FROM-п запись для таблицы «ххх» в Postgres

Облицовочный некоторые проблемы с ниже запросом и искал варианты, чтобы свести на нет ошибки, но не смогли добиться успеха. Может быть, стыки не собственно, и запрос не может быть в нем лучше всего оптимизировано состояние тоже. Будем рады, если вы могли бы помочь с этим: SELECT DISTINCT hpd_help_desk.contact_company, hpd_help_desk.incident_number, MIN (remedy.chr_imp_impact_main.start_time), MAX (remedy.chr_imp_impact_main.end_time), hpd_help_desk.closed_date, MAX (remedy.chr_imp_impact_main.end_time) , 24, remedy.chr_imp_impact_main.condition, hpd_help_desk.condition, hpd_help_desk.severity, hpd_help_desk.department_of_authority, hpd_help_desk.self_inflicted, случай, когда hpd_help_desk.assigned_group LIKE '% ННК%' ИЛИ ​​hpd_help_desk_assignment_log.assigned_group LIKE '% ННК%' ИЛИ ​​hpd_help_desk. Тогда 1 --ENUMID для = 0 простоев 0 КОНЕЦ ИНАЧЕ = 1) GROUP BY hpd_help_desk.contact_company, hpd_help_desk.condition, hpd_help_desk.self_inflicted, hpd_help_desk.incident_number, chr_imp_impact_main.condition, hpd_help_desk.closed_date, hpd_help_desk.severity, hpd_help_desk.department_of_authority, CASE КОГДА hpd_help_desk.assigned_group LIKE '% NOC%' ИЛИ ​​hdp_help_desk_assignment_log.assigned_group LIKE '% NOC%' ИЛИ ​​hpd_help_desk.owner_group LIKE '% NOC%' THEN 1 ELSE 0 END»Я получаю сообщение об ошибке: оШИБКА: отсутствует FROM-пункта входа для таблица «hdp_help_desk_assignment_log» Работа на Postgres в нашей базе данных. Любые предложения будут высоко оценены! hpd_help_desk.self_inflicted, hpd_help_desk.incident_number, chr_imp_impact_main.condition, hpd_help_desk.closed_date, hpd_help_desk.severity, hpd_help_desk.department_of_authority, случай, когда hpd_help_desk.assigned_group LIKE '% ННК%' ИЛИ ​​hdp_help_desk_assignment_log.assigned_group LIKE '% NOC%' ИЛИ ​​LIKE hpd_help_desk.owner_group «% NOC%» THEN 1 ELSE 0 END»Я получаю сообщение об ошибке: ошибка: Отсутствует запись из-пункта для таблицы„hdp_help_desk_assignment_log“Работа на Postgres в нашей базе данных. Любые предложения будут высоко оценены! hpd_help_desk.self_inflicted, hpd_help_desk.incident_number, chr_imp_impact_main.condition, hpd_help_desk.closed_date, hpd_help_desk.severity, hpd_help_desk.department_of_authority, случай, когда hpd_help_desk.assigned_group LIKE '% ННК%' ИЛИ ​​hdp_help_desk_assignment_log.assigned_group LIKE '% NOC%' ИЛИ ​​LIKE hpd_help_desk.owner_group «% NOC%» THEN 1 ELSE 0 END»Я получаю сообщение об ошибке: ошибка: Отсутствует запись из-пункта для таблицы„hdp_help_desk_assignment_log“Работа на Postgres в нашей базе данных. Любые предложения будут высоко оценены! assigned_group LIKE '% NOC%' ИЛИ ​​hdp_help_desk_assignment_log.assigned_group LIKE '% NOC%' ИЛИ ​​hpd_help_desk.owner_group LIKE '% NOC%' THEN 1 ELSE 0 END»Я получаю сообщение об ошибке: Ошибка: Отсутствует FROM-п запись для таблицы«hdp_help_desk_assignment_log "Работа на Postgres в нашей базе данных. Любые предложения будут высоко оценены! assigned_group LIKE '% NOC%' ИЛИ ​​hdp_help_desk_assignment_log.assigned_group LIKE '% NOC%' ИЛИ ​​hpd_help_desk.owner_group LIKE '% NOC%' THEN 1 ELSE 0 END»Я получаю сообщение об ошибке: Ошибка: Отсутствует FROM-п запись для таблицы«hdp_help_desk_assignment_log "Работа на Postgres в нашей базе данных. Любые предложения будут высоко оценены!
K Singh
1

голосов
0

ответ
342

Просмотры

CDC начала захват изменений данных в реальное время - репликация Postgres

Я использую AWS DMS для миграции Postgres-Postgres. Для продолжающейся репликации для других двигателей есть параметр CDC времени начала, где можно указать время начала собирания изменения вверх для репликации, но, к сожалению, Postgres не поддерживает этот параметр. По умолчанию, мое предположение, когда вы создаете задачу CDC он использует текущее время начала CDC. Но так как Postgres не имеет возможность фильтрации журналов для времени начала, я предполагаю, что он начинается с начала WAL. Это правильно? Моя цель состоит в том, вместо того, чтобы использовать DMS при полной нагрузке я хочу использовать только функцию CDC, но после того, как pg_dump восстанавливается на цели, как бы я убедиться, что записи не пропущены CDC? Спасибо!
Ramya
1

голосов
3

ответ
214

Просмотры

SQL сделать все п строку в отдельной колонке

У меня есть маленький вопрос. Моя проблема заключается в том, что у меня есть таблица с одного столбца с данными датчика. Каждая третья строка представляет собой новый образец. Моя цель прямо сейчас, чтобы преобразовать каждую третью строку в отдельный колонок, как N матрица 3 х. Я не знаю, насколько велика моя N становится. Можно ли сделать это с помощью SQL? --VALUES-- sensor_sampleA1 sensor_sampleA2 sensor_sampleA3 sensor_sampleB1 sensor_sampleB2 sensor_sampleB3 ... ... ... sensor_sampleN1 sensor_sampleN2 sensor_sampleN3 Я хочу этого. --TARGET_TABLE-- sampleA1 sampleB1 sampleC1 ... ... sampleN1 sampleA2 sampleB2 sampleC2 ... ... sampleN2 sampleA3 sampleB3 sampleC3 ... ... sampleN3 UPDATE: я использовал номер 3 выше, в качестве примера. У меня есть 11 датчиков, которые дают мне 11 значений в секунду. Мои колонки: sensor_data_id, ось, источник, тип, значение и sample_id. картина базы данных
bla93
1

голосов
0

ответ
274

Просмотры

Триггеры PostgreSQL Streaming Replication Standby

У меня есть основной и резервной базы данных PostgreSQL 9.4. Они реплицировать с помощью репликации потоковой передачи. Я хотел бы иметь резервную базу данных уведомляет приложения при его изменении (то есть повторы в xlog). Подобное поведение возможно в первичной базе данных путем создания триггеров на каждой таблицы, выполнить pg_notify, затем слушая этот уведомляют событие в приложении. Тем не менее, кажется, что триггеры не работают на режиме ожидания.
Brayden Willenborg
1

голосов
0

ответ
26

Просмотры

Как я возвращаю количество пустого массива, основанные на пределе в PostgreSQL?

Am ищет решение здесь детали Предположим: req.params.collage_id = 1; Как у меня есть только 2 найденных записей для коллажа 1, поэтому только 2 записи отображения. вместо этого пустых скобок должны отображаться, если нет данных, пожалуйста, помогите мне здесь. db.query ( 'SELECT * от студентов, где collage_id = $ 1 предел 4', [req.params.collage_id], функция (ERR, результат) {если (ERR) console.log (ERR); res.send (result.rows );}) выход: [{ "_id": 1, "название": "XYZ", "DOB": 3-12-1999}, { "_id": 4, "название": "XYZ", «DOB ": 3-1-1999}] Ожидаемые результаты [{ "_id":
Schüler
1

голосов
1

ответ
42

Просмотры

Неперекрывающиеся ограничение на Django Postgres IntegerRangeField

Я обнаружил, что Django имеет поддержку полого диапазона Postgres', а также обнаружил, что в Postgres, мы можем иметь Неперекрывающееся ограничение (исключения ограничения), как описано здесь в разделе 8.17.10. Может кто-нибудь сказать мне, как я могу применить это ограничение в Django в поле iteself не в миграции файла. Я использую Django 1.8 и Postgres 9.4 Ваша помощь будет высоко оценен.
Mohammad Mustaqeem
1

голосов
1

ответ
31

Просмотры

Рассчитайте среднее время ожидания в день

У меня есть таблица со структурой: дата | CUSTOMERID | ArrivalTime | servedTime | -------------------------------------------------- ---------------- 2018-01-01 | 0001 | 2018-01-01 18: 55: 00 | 2018-01-01 19: 55: 00 | 2018-01-01 | 0002 | 2018-01-01 17: 43: 00 | 2018-01-01 17: 59: 00 | 2018-01-01 | 0003 | 2018-01-01 14: 01: 00 | 2018-01-01 14: 10: 00 | 2018-01-02 | 0004 | 2018-01-02 09: 22: 00 | 2018-01-02 10: 00: 00 | 2018-01-02 | 0005 | 2018-01-02 12: 34: 00 | 2018-01-02 13: 10: 00 | 2018-01-02 | 0006 | 2018-01-02 18: 54: 00 | 2018-01-02 19: 00: 00 | Я пытаюсь создать запрос, который оставляет меня с двумя столбцами: дата | averageWaitTime ------------------------- Я могу затем использовать эту структуру, чтобы создать таблицу. Я не могу работать, как сочетать AVG с GROUP BY и получить требуемый результат. Первоначально я пытался сделать это, используя значение минут, я использую в другом месте в моем приложении, полученном из следующего запроса: бросок (Extract (EPOCH FROM (servedTime - ArrivalTime)) как целое число) / 60, но это еще записи для каждого клиента, а не день. Любая помощь очень ценится
Sorvah
1

голосов
0

ответ
26

Просмотры

Как остановить поле PostgreSQL время от сокращаются до нескольких секунд

У меня есть таблица с течением времени полей, созданных с помощью ниже сценария: CREATE TABLE интервал (ID SERIAL NOT NULL CONSTRAINT test_pkey PRIMARY KEY, start_time TIME NOT NULL, end_time TIME NOT NULL); Когда я вставить строку с помощью этого сценария: INSERT INTO интервала (start_time, END_TIME) VALUES ('05: 06: 07,112233' , '11: 22: 33.778899' ); Он заканчивает успешно, но миллисекунды часть отбрасывается (поля времени округляется до нескольких секунд). Я использую PostgreSQL 10. В соответствии с этим https://www.postgresql.org/docs/10/static/datatype-datetime.html разрешения типа TIME составляет 1 мкс. Как можно достичь этой резолюции и прекратить миллисекунды часть при падении?
Roman Karetnyy
1

голосов
2

ответ
67

Просмотры

Обновление каждой строки со случайным значением, выбранным из списка

У меня есть таблица пользователей с целочисленным столбцом с именем статусом и я хочу, чтобы выбрать случайное значение из списка целочисленного (10,20, 30) и установите статус для каждой строки. Я использую это: обновление "Пользователи" установить "статус" = Ia из (выбрать из (SELECT 30 AS в UNION ALL SELECT, 10 в качестве UNION ALL ВЫБРАТЬ 20 AS а) в ы порядке случайным () ограничения 1) я Результат: ID | Статус 1 20 2 20 3 20 - остальные строки имеют одинаковое значение состояния (20)
Ali Sherafat
1

голосов
1

ответ
39

Просмотры

как вставить строки из CSV конкретных столбцов в существующей таблице в Postgres + питон?

Я новичок в Python специально термос и работать на персональном веб-приложение, я получаю CSV файл от пользователя в моем HTML код, и я хочу, чтобы прочитать каждую строку и вставить специфические клетки из этой строки, к определенным столбцам в ванной существующих таблица в Postgres, используя питон панду колбу. получение этой IndexError ошибки: индекс строки из диапазона моего кода это bkfile = request.files [ «bk_file»] Conn = psycopg2.connect ( «хост = локальный имя_бд = saveory пользователя = пароль пользователя = передача») дворняжка = conn.cursor () DF = pd.read_csv (bkfile) для строки в ДФ: если не грести [5]: запрос = ( "INSERT INTO main_table (столбец2, column4, column5, column6) ЗНАЧЕНИЯ (строка [1], строка [3], строка [6], 'заряд') ") cur.execute (запрос), если не грести [6]: запрос = (" INSERT INTO main_table (Столбец2, column4,
Tal Alterzon
1

голосов
1

ответ
61

Просмотры

Найти все пользователи, которые купили свою машину, прежде чем они были 18

Я хочу, чтобы найти все пользователи, которые купили свою машину, прежде чем они были 18. Мне нужен запрос, как этот: User.includes (: автомобиль) .где (автомобиль: {bought_at <(user.birthday + 18.years)}) Каким образом можно Я пишу такой запрос в Rails 5 с Postgresql? Спасибо
John Smith
1

голосов
0

ответ
29

Просмотры

Преобразовать текст [], порожденный regexp_maches обратно к характеру той или иной

Первоначально были некоторые недопустимый символ изменения в POSTAL_CODE колонки. [Действительная форма [AZ] [0-9] [AZ] \ s [0-9] [AZ] [0-9]]. После того, как я выполнив следующую команду SQL CREATE TABLE AS SELECT public.valid_geo regexp_matches (postal_code, '[AZ] [0-9] [AZ] \ S [0-9] [AZ] [0-9]') А.С. postal_code, СУММА (всего) AS X, (СУММА (всего) / COUNT (tran_num)) в качестве Y, COUNT (tran_num) кАК Z оТ public.raw_data AS postal_code GROUP BY postal_code я получил таблицу со всеми значение, например { "J4D 4K9" } для столбца [post_code]. Есть ли способ, чтобы преобразовать значение в этом столбце обратно 6-значного характер изменения (как: J4D4K9 [С вне пространства и «{» «}»])? Примечание: Я пытался просто получить доступ к первому элементу в каждом массиве. Тогда я получил текст "J4D 4K9.
Leo Lin
1

голосов
1

ответ
152

Просмотры

Получение файла CSV с партией и использовать его в SQL Statement

У меня есть файл SQL (import_noeud.sql), что скопировать файл CSV в таблицу. \ Копию public.import_noeud FROM 'Т: \ делах \ 102 \ 171205_noeud.csv' DELIMITER ';' CSV; Затем я использую пакетный файл с Psql заявлением, чтобы запустить свой файл SQL. PSQL -h LOCALHOST -U Postgres -d DEV -v ON_ERROR_STOP = 1 -f import_noeud.sql> 01.log 2> & 1 В настоящее время на каждый раз, когда пользователь хочет реимпорт новых точек он должен идти модифицировать ЕК SQL файл. Мой вопрос, может мой пакетный файл: открыть окна Проводник предложит пользователю принести CSV файл, сохраните результат (например, «T: \ \ Affaires 102 \ 171205_noeud.csv») запустить файл SQL, используя результат
var29
1

голосов
0

ответ
459

Просмотры

Rails Indexing: Adding :btree index type to migration

Я пытаюсь выяснить, как запустить миграцию, которая добавляет тип индекса B-Tree с индексом. Я попытался запустить рельсы г миграции add_index_to_recipes, которые дали мне пустую миграцию: класс AddIndexToRecipes <ActiveRecord :: Migration [5,0] Защите изменить конец конца, то я изменил миграцию следующим образом: класс AddIndexToRecipes <ActiveRecord :: Migration [5,0] Защите изменить add_column: рецепты,: user_id,: целое add_index: рецепты,: user_id, используя:: ВТКЕЕ конец конец Тогда я побежал рельсы БД: мигрировать, но в схеме до сих пор нет тип индекса. Миграция побежал прекрасно, но моя схема по-прежнему выглядит следующим образом: create_table «рецепты», сила:: каскадный сделать | т | t.string "название" t.datetime "created_at", нуль: ложные t.datetime "updated_at", NULL: ложные t.integer "user_id" т. Индекс [ «user_id»], название: «index_recipes_on_user_id» конец я хочу, чтобы выглядеть следующим образом: create_table «рецепты», сила:: каскадный делать | т | t.string "название" t.datetime "created_at", NULL: ложные t.datetime "updated_at", NULL: ложные t.integer "user_id" t.index [ "user_id"], имя: "index_recipes_on_user_id", используя:: ВТКЕЕ конец Аналогичные вопросы были здесь просили, но до сих пор я не смог придумать решение. Что мне не хватает?
Belder
1

голосов
1

ответ
124

Просмотры

Ecto присоединяется возвращение ноль записей

У меня есть два экто запросов, скажем Query1 и Query2, теперь я выступаю полное объединение между этими двумя экто запросов, что-то вроде этого Query1 |> Join (: полный, [а], а в подзапрос (QUERY2), a.id == b.id) Все работает нормально, но некоторые из записей возвращаются в ноль, что-то вроде этого [% пользователей {},% пользователей {},% пользователей {}, ноль,% пользователь {},% пользователей {}, ноль,% пользователь {},% пользователей {}, ноль] Я думаю, что тот же вопрос также обсуждался в этой теме эктопаразитицид. Есть ли какой-нибудь обходной путь для этого экто присоединиться к вопросу.
Chandra Shekhar
1

голосов
1

ответ
195

Просмотры

Как сделать резервную копию базы данных PostgreSQL рельсов проект развертывания на EC2

Мне нужно сделать резервную копию базы данных postegresql рельсов проекта развернуты на EC2 с использованием Capistrano. Так как я могу это сделать, а также я хочу, чтобы сохранить резервную копию данных на локальном компьютере
Hiệp Hồ
1

голосов
0

ответ
62

Просмотры

Долго работает Psql запросы синхронизации в произвольном порядке - не может анализировать

У меня есть некоторые PSQL запросы, работающие на RDS. 90% времени, эти запросы будут работать нормально. Однако иногда эти запросы будут случайным образом тайм-аут и не выполнить. Я включил лесозаготовки и auto_explain однако auto_explain будет только войти планы запросов для запросов, которые в комплекте. Если я увеличиваю statement_timeout запросы будут по-прежнему продолжают таймаут через случайные промежутки времени без каких-либо объяснений. Кто-нибудь видел этот вопрос до или есть какие-либо идеи, как анализировать запросы, которые не завершены?
Angelis
1

голосов
2

ответ
105

Просмотры

дата запроса диапазонов PostgreSQL

У меня есть следующий PostGreSQL таблица; ID Дата 1 [2017-01-01,2051-01-01) 2 [2017-01-01,2051-01-01) 3 [2017-01-01,2051-01-01) 4 [2017-01- 01,2051-01-01) 5 [2000-01-01,2017-01-01) 6 [2000-01-01,2017-01-01) 7 [2017-01-01,2051-01-01) 8 [2017-01-01,2051-01-01) 9 [2017-01-01,2051-01-01) 10 [2017-01-01,2051-01-01) Как можно запросить в таких диапазонов дат что в июне 2003 года он возвращается ID 5 и 6.
shahzad ise
1

голосов
1

ответ
66

Просмотры

Postgres: создать новый объект jsonb с согласованными значениями

Поэтому у меня есть эта таблица вопросов, которые имеют установок jsonb столбец: {ID: 'вопрос-ID-1', параметры: {foo1: правда, Foo2: правда, бар: ложные}}, {ID: «вопрос-ID-2 », настройки: {бар: истинные}} Теперь я хочу сделать Postgres БД миграционного обновления скрипта, который приводит к: {ID: 'вопрос-ID-1', параметры: {Foo1: правда, Foo2: правда, бар: ложные , выбирает: [ 'foo1', 'foo2']}}, {ID: 'вопрос-ID-2', параметры: {бар: правда, предпочитает: [ 'бар']}} это только те, что имеет значение иСТИНА добавлены в новый OPTS массив внутри настроек. Это для Postgres 9.5. Заранее благодарю.
Bao Nguyen
1

голосов
0

ответ
60

Просмотры

фильтровать таблицу с 80 миллионами записей и без индекса и скопировать его в новую таблицу

У меня есть Postgres БД с 80 миллионами записей и без индекса. Одна из этих колонн, скажем, d, является дата-время. Я хочу взять все записи таким образом, что D> 1/1/2018 в другую таблицу. Какой самый эффективный способ сделать это? То, что я сейчас делаю: Select * в new_table из big_table где d> «1/1/2018» Но это занимает часы, и у меня нет видимости на время, что я должен ждать, пока этот запрос, чтобы закончить. Было бы лучше, чтобы создать первый индекс на столбце D, а затем сделать выбор в? Опция также для удаления из моей таблицы всех записей с г <1/1/2018, но я не уверен, что это будет быстрее ..
Ulderique Demoitre
1

голосов
2

ответ
50

Просмотры

Как обнаружить, если вид был создан с помощью расширения?

В PostgreSQL о том, как можно узнать, является ли конкретный вид был создан с помощью расширения? Что SQL запрос должен быть выполнен, чтобы узнать? Нет ручных решений.
Axel Fontaine
1

голосов
0

ответ
131

Просмотры

Хранение Base64 вместо UUID в Postgres

Могу ли я хранить его в поле строки. В принципе, я генерирует уникальный идентификатор с помощью UUID функции, а затем преобразовать его в base64, который выглядит, как в Google, то хранить, что в базе данных. Я планирую использовать Кассандру в будущем, так что я не уверен, что это хит производительности, если я буду использовать строку в качестве первичного ключа там. Я просто хочу знать, что это лучшая практика для этого. Спасибо.
Dark
1

голосов
0

ответ
34

Просмотры

How to automatically create a table on a predefined interval (e.g. month) using current_date()

Я хотел бы автоматически создать таблицу, в моем PostGreSQL дб, каждый месяц, используя сохраненные данные. Каждый раз, когда запрос выполняется Я хотел бы имя таблицы динамически изменять (например, table_JAN2018, table_FEB2018, table_MAR2018 и т.д.), так как создается новая таблица с новыми данными этого месяца, а старые таблицы остаются нетронутыми. После исследования, я обнаружил, что я могу добиться этого, как описано в ссылке ниже (?): Имя таблицы в качестве параметра функции PostgreSQL Так что я пробовал, в той же манере, код ниже: CREATE FUNCTION table_Jan2018 () возвращает аннулируются в $ Func $ НАЧАТЬ ВЫПОЛНИТЬ «создать таблицу» || ТО_СНАК (текущая_дата, '% б /% Y' || «, как выбрать * из (выберите ID, продукт, клиент, PURCHASE_DATE, sales_status, случай, когда complete_transaction_date является нулевым, тогда отбрасывать (PURCHASE_DATE как дата), когда проверяется не равно нулю, то отбрасывать (complete_transaction_date как дата) конец как покупка от клиентов, где sales_status в ( «State1», «State2») и тест = ЛОЖЬ), где покупка> = (текущая_дата - интервал '30' день) '; конец; Однако то, что я получаю следующее сообщение об ошибке в вуаля: «нет реальной альтернативы при вводе 'CREATE FUNCTION» Является ли данная функция подходит для того, чтобы динамически изменять имя таблицы, как мне нужно? Есть еще один способ добиться того, чего я хочу? Заранее спасибо!! то, что я получаю следующее сообщение об ошибке в вуаля: «нет реальной альтернативы при вводе 'CREATE FUNCTION» Является ли данная функция подходит для того, чтобы динамически изменять имя таблицы, как мне нужно? Есть еще один способ добиться того, чего я хочу? Заранее спасибо!! то, что я получаю следующее сообщение об ошибке в вуаля: «нет реальной альтернативы при вводе 'CREATE FUNCTION» Является ли данная функция подходит для того, чтобы динамически изменять имя таблицы, как мне нужно? Есть еще один способ добиться того, чего я хочу? Заранее спасибо!!
Elli Chatzistamou
1

голосов
1

ответ
339

Просмотры

Обновление вложенных тегов в формате JSON поле в Postgresql

Ihave следующее поле JSON: { "Id": "64848e27-C25D-4f15-99db-b476d868b575", "Associations_": [ "RatingBlockPinDatum"], "RatingScenarioId": "00572f95-9b81-4f7e-a359-3df06b093d4d", " RatingBlockPinDatum ": [{ "Имя": "mappedmean", "PinId": "I.Assessment", "Значение": "24,388", "BlockId": "оценка"}, { "Name": "realmean"," PinId «:„I.Assessment“,„значение“:„44,502“,„BlockId“:„оценка“}]} Я хочу, чтобы обновить значение от 24.388 до нового значения в вложенном массиве»RatingBlockPinDatum», где Name =„mappedmean“Любая помощь будет оценена, я уже пробовал это, но не мог приспособить его для правильной работы:.. [Update вложен ключ с Postgres JSon поля в Rails
user3202839
1

голосов
1

ответ
38

Просмотры

ОБНОВЛЕНИЕ одну строку в таблице с ЗЕЬЕСТ из другой таблицы

Я использую PostgreSQL. Мои таблицы были созданы следующим образом. Для данного DEVICE_ID, я хотел бы, чтобы выбрать запись из таблицы температуры с максимальной record_time, и обновляет last_record_time столбца в таблице устройств для этого DEVICE_ID. CREATE TABLE IF NOT EXISTS устройств (device_id последовательного первичного ключа, device_name VARCHAR (255) NOT NULL UNIQUE, last_record_time метки времени без временной зоны NOT NULL DEFAULT '1995-10-30 10:30:00'); CREATE TABLE IF NOT EXISTS температура (device_id целого число, не равна NULL, температуры десятичной NOT NULL, record_time метки времени без временной зоны, скованности temperature_device_id_fkey внешнего ключа (DEVICE_ID) СПРАВОЧНОЕ устройство (device_id) MATCH просто на UPDATE никаких действий не DELETE никаких действий); Я получаю максимальную record_time из таблицы температуры следующим образом: SELECT MAX (record_time) ОТ температур, где device_id = 4; Это работает. Как я конвейер вывод второго запроса в оператор UPDATE, так что last_record_time в записи в таблице устройств, что соответствует предоставленному DEVICE_ID обновляется. Я прочитал о INNER JOIN, но, кажется, собрать несколько записей. Device_id является уникальным в таблице устройств. Таким образом, мне это нужно, чтобы обновить ровно один рекорд каждый раз.
Jabari Dash
1

голосов
0

ответ
117

Просмотры

Как сбросить / восстановить только Diff данных между старой и новой базы данных

У нас есть большая база данных PostgreSQL и на самом деле мы поставляем весь файл дампа ... так что это займет слишком много времени, чтобы быть сброшены, а затем восстановлен! Есть легкий способ, чтобы иметь возможность сбрасывать только Diff данные в определенной схеме и восстановить только что Diff данных (создание новой таблицы, обновление же измененные таблицы и удаление удаленные из них)? Заранее спасибо за вашу помощь !
Mounirsky
1

голосов
0

ответ
694

Просмотры

Узел функции Lambda доступа к базе данных Aurora раз с Postgres

Я пытаюсь написать функцию лямбды (в nodejs), который выполняет простой запрос SQL. База данных является Aurora Postgres. Я настроил конфигурацию функции для доступа VPC, прекрасно работал с базой данных MySQL. Как вы можете видеть в следующем, я с помощью модуля «PG» узла (https://github.com/brianc/node-postgres). app.js // Например, эта функция времени ожидания сопза {Client} = требуется ( 'пг'); Const конфиг = {пользователь: '', хост: '', базы данных: '', пароль: '', порт:}; вар postgresClient = новый клиент (конфигурация); module.exports.handler = (событие, контекст, центибар) => {console.log ( 'вошел обработчик'); postgresClient .Подсоединить () .then (() => {console.log ( 'подключен'); вернуть postgresClient.end ();}) .then (() => CB ()) .catch (CB); }; Тем не менее, при использовании базы данных Postgres, функция лямбды раз каждый раз, когда я призываю. Я настроил подсеть и группы безопасности. Я также попытался использовать пул из модуля пг, без успеха. Обратите внимание, что эта функция работает локально с успехом ... Я не могу понять, почему лямбда терпит неудачу, когда он развернут.
hlefebvr
1

голосов
1

ответ
691

Просмотры

мульти нить питон psycopg2

Я использую мульти нить внутри моей программы в питоне. У меня есть 3 очереди. В одном из них я вставки данных в базу данных Postgres. Но прежде, мне нужно проверить, если в базе данных уже существует ряд с определенным доменом. Так что я получил: класс AnotherThread (threading.Thread): Защита __init __ (я, another_queue): threading.Thread .__ __ INIT (сам) self.another_queue = another_queue Защиты работать (самостоятельно): в то время как True: порция = self.another_queue. получаем (), если кусок не '': Dane = кусок [0] .split ( '', 2) cur.execute ( "SELECT, существует (SELECT 1 из глобальной где домен =% s)", (DOMENA,)) шутка = cur.fetchone () печать (шутка) Это часть кода моей третьей очереди. Я'
Daniel Koczuła
1

голосов
1

ответ
328

Просмотры

Является ли первичный ключ, необходимый для репликации вставки с помощью pglogical?

Я пытался настроить простой мастер> ведомый репликации с помощью pglogical. В pglogical документы упоминают, что один нужен первичный ключ для репликации обновлений и удалений. Поскольку мне не нужен ни один, настроить репликацию набора у поставщика следующим образом: SELECT pglogical.create_replication_set (set_name: = '' all_remote_tables, replicate_insert: = True, replicate_update: = False, replicate_delete: = False, replicate_truncate: = ложь); Затем я добавил свою таблицу: SELECT pglogical.replication_set_add_table (set_name: = '' all_remote_tables соотношение: = 'измерения', synchronize_data: = истина); Мой абонент устанавливается следующим образом: SELECT pglogical.create_subscription (SUBSCRIPTION_NAME: = 'testsubscription1', provider_dsn: 'хост = $ HOST порт = $ порта имя_бд = $ DbName пароль пользователя = $ USER = $' = PW, replication_sets: = массива [ ''] all_remote_tables, synchronize_structure: = верно, synchronize_data: = True, forward_origins: = '{}'); С помощью этой установки и сервировки стола, как это: CREATE TABLE "измерения" (время TIMESTAMP С TIME ZONE NOT NULL, значение NUMERIC, sensor_id TEXT); только структура тиражируется. Как только я добавить первичный ключ: TABLE "измерения" СОЗДАТЬ (идентификатор SERIAL PRIMARY KEY, время TIMESTAMP WITH TIME ZONE NOT NULL, значение NUMERIC, sensor_id TEXT); все работает, как ожидалось. Так как я хочу, чтобы хранить высокочастотные таймсерии (с использованием timescaledb) и никогда не буду иметь необходимости обновления / удаление отдельных строк я не вижу преимущество первичного ключа здесь. Поэтому я хочу знать, если pglogical не работает без первичных ключей с помощью конструкции или если я сделал некоторые неверные настройки. Набор репликации прекомпилированный «default_insert_only» работает без какого-либо первичного ключа, но я хочу использовать свои собственные наборы репликации. Немного оффтоп: вы бы даже рекомендовал использовать pglogical для простых нескольких мастеров> один подчиненного тиражирование конкретных таблиц (= агрегации)? Так как Postgres 10 логическая репликации является частью ядра во всяком случае.
Tom
1

голосов
0

ответ
50

Просмотры

сайт Джанго, который обновляет страницу на новой записи Postgres, чтобы обеспечить в реальном времени обновления для пользователей

Я хочу, чтобы автоматически обновить / перезагрузить страницу Джанго в WebBrowser пользователей, когда новая запись найдена в базе данных. В настоящее время я использую мета обновления в качестве временного решения. Я установил и использую pgpubsub. Таким образом, я могу получить уведомление, когда есть новый элемент в базе данных. Но как я триггер Джанго перезагрузить веб-сайт? импорт pgpubsub PubSub = pgpubsub.connect (хост = "локальный", база данных = "somedb", пользователь = "кто-нибудь") pubsub.listen ( 'pg_news'); для е в pubsub.events (): печать (e.payload) любые идеи приветствуются
mgo
1

голосов
1

ответ
1.7k

Просмотры

Postgresql чтения роль и пользователь

Я не мог найти ответ на этот вопрос: почему выбор из таблицы не в состоянии после того, как привилегии были предоставлены? - создать новую роль CREATE РОЛИ только для чтения; - предоставить доступ ко всем существующим таблицам GRANT CONNECT ON DATABASE магазин К READONLY; GRANT USAGE по схеме общественности К READONLY; GRANT SELECT, для всех таблиц SCHEMA общественности К READONLY; GRANT SELECT, НА ВСЕХ ПОСЛЕДОВАТЕЛЬНОСТИ В SCHEMA общественности К READONLY; GRANT EXECUTE на все функции SCHEMA общественности К READONLY; - предоставить доступ ко всей таблице, которая будет создана в будущем ALTER DEFAULT ЛЬГОТ В SCHEMA общественного GRANT ВЫБРАТЬ НА ТАБЛИЦЫ К READONLY; ALTER DEFAULT ЛЬГОТ В SCHEMA общественного ГРАНТ НА ​​ВЫБОР последовательностях READONLY; ALTER DEFAULT ЛЬГОТ В SCHEMA публичной GRANT EXECUTE ON ФУНКЦИИ ДЛЯ READONLY; - создать пользователя и грантовое роль этого пользователя CREATE USER b_readonly с паролем 'reAdOnLy123'; GRANT только для чтения К b_readonly; Мое сообщение об ошибке из БД имеет следующий вид: ОШИБКА: разрешение отказано отношение customer_search_query состояния SQL: 42501 Есть ли какой-то новый трюк в Postgresql 9.6.5? Лучший
Mike Winkelmann
1

голосов
1

ответ
396

Просмотры

Postgres ориентированный граф обхода вверх и вниз

У меня есть проблема, которую я могу решить для небольших наборов данных, но терплю неудачу на крупных с (возможно) нечистыми данными. Базы данных является реализацией ациклического (надеюсь) в графе PostgreSQL. С тремя таблицами vertex_elements: кромками: ID, parent_id, child_id element_associations: Удостоверение личности, идентификатор_пользователь, object_id (оба вершинными элементы, но не связанные графики) У меня есть набор user_ids, из которого я извлекаю element_associations и стартовый vertex_element на графике, и я хочу, чтобы найти все дочерние узлы доступны из element_association с одним из user_ids. Узел считается доступным, если это, или один из его предков является одним из кандидатов object_ids в качестве element_association. График относительно треугольной формы (несколько корневых узлов с большим количеством узлов листьев), и от исходного элемента вершины, моя стратегия заключается в следующем: Проверьте текущий vertext_element против списка кандидатов element_associations; если это хорошо, все потомки доступны, в противном случае перейти к ... Проверьте, если предки текущего vertex_element в списке кандидатов element_associations. Аналогично (1), если это хит, то все предки доступны, в противном случае перейти к ... Траверс каждого ребенка vertex_element (широта первого поиска) и выполните шаги 1 & 2. Возникает вопрос, когда я хочу, чтобы избежать двойного проверка предка vertex_elements. Основной запрос является обходом вниз, проверяя доступность каждого потомок с набором кандидатов element_associations с рекурсивным edges_recursive (child_id, parent_id, matching_element_association_id) AS ((SELECT e1.child_id, e1.parent_id, шт. Идентификатор от краев е1 LEFT OUTER JOIN element_associations е ПО e1.child_id = ea.object_id И ea.id В (?) где parent_id =? ) СОЕДИНЕНИЕ (SELECT e2.child_id, e2.parent_id, ea.id от краев е2 INNER JOIN assignments_recursive ПО edges_recursive.child_id = e2.parent_id LEFT OUTER JOIN element_associations еа ПО edges_recursive.child_id = ea.object_id И ea.id IN (?) ГДЕ edges_recursive.matching_element_association_id IS ВЫБОР edges_recursive.child_id ОТ edges_recursive ГДЕ edges_recursive.matching_element_association_id, однако, не NULL NULL)), есть дополнение рекурсивный подзапрос, который проверяет каждый vertex_element» matching_element_association_id ОТ parent_edges_recursive ГДЕ parent_edges_recursive.matching_element_association_id IS NOT NULL LIMIT 1)) Проблема с этим состоит в том, что в том, что, как правило, подзапросов, чтобы избежать обхода тот же родительский вершину дважды; Однако, нет никакой гарантии, что, как мы пересекаем вниз граф через потомков, которые мы не будем RETREAD ранее оцененных предков. Для небольших наборов данных, это нормально, и производительность в порядке; Однако, это смешно неприступный, и чрезвычайно неупругого циклам. Что мне нужно сделать, это сохранить информацию о том, что vertex_elements родителя я уже пройденного между подзапросами так, чтобы избежать действий протекторов; Однако, я застрял на том, как сделать это в единственном запросе. matching_element_association_id IS NOT NULL LIMIT 1)) Проблема с этим состоит в том, что есть то, что подзапросы, как правило, чтобы избежать перемещений и ту же родительскую вершины дважды; Однако, нет никакой гарантии, что, как мы пересекаем вниз граф через потомков, которые мы не будем RETREAD ранее оцененных предков. Для небольших наборов данных, это нормально, и производительность в порядке; Однако, это смешно неприступный, и чрезвычайно неупругого циклам. Что мне нужно сделать, это сохранить информацию о том, что vertex_elements родителя я уже пройденного между подзапросами так, чтобы избежать действий протекторов; Однако, я застрял на том, как сделать это в единственном запросе. matching_element_association_id IS NOT NULL LIMIT 1)) Проблема с этим состоит в том, что есть то, что подзапросы, как правило, чтобы избежать перемещений и ту же родительскую вершины дважды; Однако, нет никакой гарантии, что, как мы пересекаем вниз граф через потомков, которые мы не будем RETREAD ранее оцененных предков. Для небольших наборов данных, это нормально, и производительность в порядке; Однако, это смешно неприступный, и чрезвычайно неупругого циклам. Что мне нужно сделать, это сохранить информацию о том, что vertex_elements родителя я уже пройденного между подзапросами так, чтобы избежать действий протекторов; Однако, я застрял на том, как сделать это в единственном запросе. Однако, нет никакой гарантии, что, как мы пересекаем вниз граф через потомков, которые мы не будем RETREAD ранее оцененных предков. Для небольших наборов данных, это нормально, и производительность в порядке; Однако, это смешно неприступный, и чрезвычайно неупругого циклам. Что мне нужно сделать, это сохранить информацию о том, что vertex_elements родителя я уже пройденного между подзапросами так, чтобы избежать действий протекторов; Однако, я застрял на том, как сделать это в единственном запросе. Однако, нет никакой гарантии, что, как мы пересекаем вниз граф через потомков, которые мы не будем RETREAD ранее оцененных предков. Для небольших наборов данных, это нормально, и производительность в порядке; Однако, это смешно неприступный, и чрезвычайно неупругого циклам. Что мне нужно сделать, это сохранить информацию о том, что vertex_elements родителя я уже пройденного между подзапросами так, чтобы избежать действий протекторов; Однако, я застрял на том, как сделать это в единственном запросе. Что мне нужно сделать, это сохранить информацию о том, что vertex_elements родителя я уже пройденного между подзапросами так, чтобы избежать действий протекторов; Однако, я застрял на том, как сделать это в единственном запросе. Что мне нужно сделать, это сохранить информацию о том, что vertex_elements родителя я уже пройденного между подзапросами так, чтобы избежать действий протекторов; Однако, я застрял на том, как сделать это в единственном запросе.
fpcyan
1

голосов
1

ответ
372

Просмотры

date_part или функция ЭКСТРАКТ в Querydsl

Там способ использовать date_part или функции EXTRACT или эквивалент с помощью querydsl? Я использую рамки пружинных построить отдых aplicaiton с querydsl, и необходимо создать группу по дате интервала как КВАРТАЛ года (SELECT EXTRACT (КВАРТАЛ ОТ TIMESTAMP «2001-02-16 20:38:40») или ВЫБРАТЬ date_part ( «день», TIMESTAMP «2001-02-16 20:38:40») Я был поиск решения, используя только querydsl но withou успех. Я использую PostgreSQL дб.
TheJodaltro

Просмотр дополнительных вопросов