Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вывести ID, которых нет в таблице, имея лишь права "read" / 12 сообщений из 12, страница 1 из 1
02.06.2016, 20:29
    #39249529
neznakomec553
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести ID, которых нет в таблице, имея лишь права "read"
Добрый день.

Столкнулся с задачей, когда требуется вывести ID, которых нет в таблице feo_12 в базе, но которые есть в текстовом файле. При этом права в базе только "read", к шелу доступа нет (только к обработчику SQL есть), все это в веб версии pgadmin.

Список ID, которые предоставили, представляет собой '000111544','000111543','000111540','000111538','000011536' и т.д. (10 тыс. штук).

Если был нормальный доступ, то создал бы таблицу test, заполнил бы ее предоставленными ID (благо удобно предоставили) и сделал так:

SELECT
*
FROM
test
WHERE
test.id not in feo_12.id;

Но тут права только "read"... Помогите, пожалуйста.
...
Рейтинг: 0 / 0
02.06.2016, 21:19
    #39249550
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести ID, которых нет в таблице, имея лишь права "read"
neznakomec553,

Если есть read доступ к таблице в базе, то можно выгрузить список ID в ещё один файл, отсортировать оба файла и утилитой `comm` получить разность (те, которых нет в таблице). Утилита линуховая правда.

Другой вариант — использовать любую временную базу (можно даже новую сделать), подключить как внешнюю существующую read-only и загрузить во временный файл тот список, что был предоставлен.
...
Рейтинг: 0 / 0
02.06.2016, 21:36
    #39249576
neznakomec553
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести ID, которых нет в таблице, имея лишь права "read"
vyegorov,

1. Я на убунте работаю, поэтому для меня было бы самое то, если бы не хотелось средствами именно SQL эту задачу выполнить. Без SQL я бы просто в Sublime сравнение сделал. Но задача такая, как я понял, не на один раз, а выгружать, сравнивать, вставлять, джойнить, выгружать... слишком неэффектино.

2. Не получится такое сделать - сервер рубит "тяжелые" соединения.
...
Рейтинг: 0 / 0
02.06.2016, 21:37
    #39249577
neznakomec553
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести ID, которых нет в таблице, имея лишь права "read"
vyegorov,

если речь про сделать базу на том же аккаунте - запрещено - пробовал.
...
Рейтинг: 0 / 0
02.06.2016, 23:05
    #39249610
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести ID, которых нет в таблице, имея лишь права "read"
...
Рейтинг: 0 / 0
02.06.2016, 23:06
    #39249611
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести ID, которых нет в таблице, имея лишь права "read"
...
Рейтинг: 0 / 0
03.06.2016, 18:47
    #39250354
neznakomec553
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести ID, которых нет в таблице, имея лишь права "read"
roadster,

Не совсем понял, как это мне поможет:) (у меня лишь базовое знание, поэтому глубинный смысл не вижу).
Там в примерах, насколько я понял, обязательное условие - создание таблицы. Т.к. доступ только "read", то не могу создать таблицу:)
...
Рейтинг: 0 / 0
03.06.2016, 20:05
    #39250400
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести ID, которых нет в таблице, имея лишь права "read"
neznakomec553Там в примерах, насколько я понял, обязательное условие - создание таблицы.нет.
...
Рейтинг: 0 / 0
04.06.2016, 01:34
    #39250545
neznakomec553
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести ID, которых нет в таблице, имея лишь права "read"
roadster,

тем не менее мне непонятно, как это поможет при решении моей задачи. Ничего похожего там в примерах нет.
...
Рейтинг: 0 / 0
04.06.2016, 07:51
    #39250555
g2099599
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести ID, которых нет в таблице, имея лишь права "read"
neznakomec553,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with foo AS (
	select unnest(ARRAY['000111544','000111543','000111540','000111538','000011536']) as fileid
) 
select * 
from foo
where 
	not exists(
		select 1
		from feo_12 f
		where f.id = foo.fileid
	)
...
Рейтинг: 0 / 0
04.06.2016, 10:06
    #39250573
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести ID, которых нет в таблице, имея лишь права "read"
g2099599,

Если кол-во элементов большое — “10 тыс. штук” — то может быть быстрее через конструкцию VALUES:
Код: sql
1.
2.
3.
4.
5.
6.
7.
WITH v(file_id) AS (
	SELECT * FROM (VALUES ('000111544'::text),('000111543'),('000111540'),('000111538'),('000011536')) x
) 
SELECT v.*
   FROM v
   LEFT JOIN feo_12 ON v.file_id=feo_12.id
 WHERE feo_12.id IS NULL;
...
Рейтинг: 0 / 0
09.06.2016, 09:50
    #39253308
neznakomec553
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывести ID, которых нет в таблице, имея лишь права "read"
Воу... Спасибо, парни! Вы очень помогли!:)
Даже мотивация подучить SQL появилась:)
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вывести ID, которых нет в таблице, имея лишь права "read" / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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