sudo -u postgres psql -d dbname -c "SELECT * FROM table;"
Здесь
dbname
— это название вашей БД, table
– имя таблицы. Разумеется, используем права суперпользователя
sudo
для переключения пользователя на postgres
, psql
является инструментом командной строки PostgreSQL, а ключ -c
нужен для выполнения конкретного запроса.-t
, который выводит данные построчно, и -X
для того, чтобы .psqlrc
не обрабатывался командой psql
.Пишите, кстати, если сталкивались с такими кейсами
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍6🔥3
CREATE OR REPLACE FUNCTION 'имя_процедуры(параметры)' RETURNS 'тип_результата' AS $$
DECLARE
-- переменные_локальные тип_переменной
BEGIN
-- Тело процедуры
-- Может содержать SQL запросы, управляющие конструкции и другие операторы
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION hello_world()
RETURNS VOID AS $$
BEGIN
RAISE NOTICE 'Hello, World!';
END;
$$ LANGUAGE plpgsql;
SELECT hello_world();
Таким образом, вы можете создавать и вызывать процедуры в PostgreSQL с помощью PL/pgSQL.
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥5❤2🤬2👎1
UTF8
. Тогда как Django выдавал следующее сообщение:'latin-1' codec can't encode characters in position 55-64: ordinal not in range(256)
Проблема заключалась в том, что кодировка сервера была первоначально выставлена в
LATIN1
. То есть следующие команды давали следующий вывод:postgres=# show server_encoding; server_encoding ----------------- LATIN1(1 row) postgres=# show client_encoding; client_encoding ----------------- LATIN1(1 row) postgres=# \encoding LATIN1
Выполнение команды
SET CLIENT_ENCODING TO 'utf8';
не давало результата, после выхода из psql
кодировка возвращалась в LATIN1
.sudo apt-get install language-pack-ru
Выполнение процесса русификации
sudo update-locale LANG=ru_RU.UTF-8
И перезагрузка сервера
sudo reboot
После этого кодировка клиента сервера стала UTF8
postgres=# show server_encoding; server_encoding ----------------- LATIN1(1 row) postgres=# show client_encoding; client_encoding ----------------- UTF8(1 row) postgres=# \encoding UTF8
Вот такие дела, этого оказалось достаточно для исправления бага.
Возможно, кому-то будет особенно актуально
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤8🔥3
Для создания дампа базы данных PostgreSQL в текстовом формате на Heroku выполните два действия:
heroku pg:backups:capture && heroku pg:backups:download
pg_restore
:
pg_restore -f mydb.sql latest.dump
Здесь
mydb.sql
— это конечный файл с вашими данными. До начала работы убедитесь, что у вас установлен Postgres для использования команды pg_restore
.@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🔥2
Такой анализ потенциальных проблем в базе данных имеет очевидные преимущества:
dev/test/prod
) и даже на пустой БД, где нет данных (бэкап структуры без данных)Встраивать такого рода проверки в CI — это однозначно полезная практика. Разовая инвестиция в настройку конвейера исключит спектр потенциальных проблем с расхождением данных.
Подробнее об этом тут:
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3🔥3
Этот:
SELECT *
FROM table
WHERE property IN ('a','b','c')
или вот этот:
SELECT *
FROM table
WHERE property='a' OR property='b' OR property='c'
in
явно выигрывает из-за компактности.А если рассматривать конкретные реализации - то различия могут быть. Например,
postgresql
строит разные планы для IN
и OR
:explain select * from bigtable where id = 1 or id = 3 or id=4;
QUERY PLAN
----------------------------------
Bitmap Heap Scan on bigtable (cost=13.34..25.34 rows=3 width=12)
Recheck Cond: ((id = 1) OR (id = 3) OR (id = 4))
-> BitmapOr (cost=13.34..13.34 rows=3 width=0)
-> Bitmap Index Scan on bigtable_pkey (cost=0.00..4.45 rows=1 width=0)
Index Cond: (id = 1)
-> Bitmap Index Scan on bigtable_pkey (cost=0.00..4.45 rows=1 width=0)
Index Cond: (id = 3)
-> Bitmap Index Scan on bigtable_pkey (cost=0.00..4.45 rows=1 width=0)
Index Cond: (id = 4)
explain select * from bigtable where id in (1,3,4);
QUERY PLAN
----------------------------------
Index Scan using bigtable_pkey on bigtable (cost=0.44..17.37 rows=3 width=12)
Index Cond: (id = ANY ('{1,3,4}'::integer[]))
Как можно заметить,
IN
был переписан в другую форму и оценён дешевле, чем несколько эквивалентных OR
.Какие-то другие СУБД может быть переписывают оба запроса в идентичное представление, или же переписывают
IN
в группу OR
. Вопросы производительности необходимо рассматривать только в рамках какой-то конкретной реализации.Вот такие дела
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🔥10❤5
Управление параллелизмом является важным аспектом в системах БД, которые имеют дело с множеством параллельно выполняющихся транзакций. В PostgreSQL применяются различные методы для обеспечения параллельного доступа к базе данных при поддержке согласованного состояния данных с использованием свойств атомарности и изоляции ACID (атомарность, согласованность, изоляция и длительность).
Этот метод управления параллелизмом используется в системах баз данных для обеспечения параллельного доступа к разделяемым данным. Это осторожный подход, предполагающий, что конфликты между транзакциями весьма вероятны, и предотвращает конфликты наложением блокировок на объекты базы данных (строки или таблицы). Пессимистичное блокирование гарантируют эксклюзивный доступ к данным, но оно может привести к расширению блокировок и сокращению параллелизма по сравнению с подходом оптимистичного блокирования.
Оптимистичный подход в технике управления параллелизмом исходит из того, что конфликты между транзакциями редки, и это позволяет обрабатывать транзакции без наложения блокировок на объекты базы
данных при выполнении всей транзакции. Конфликты проверяются, обнаруживаются и разрешаются только во время фиксации транзакции.
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍7🔥2👎1
Собственно, об этом и идёт речь в статье.
/contrib/
. Во-вторых, pg_proc.dat
является удобной точкой входа для изучения внутренностей PostgreSQL. Также файл бывает полезен, когда вы примерно понимаете, какую функцию ищите, но не знаете ее название.@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤4🔥2
pg_profile/pgpro_pwr
— собственно, об этом и идёт речь в видео. Спикер рассказывает об архитектуре, возможностях, особенностях работы и способах применения этих расширений.
Enjoy)
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤5🔥2
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15❤3👍3🥰1
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥5
🔥Подборка лучших обучающих каналов для программистов.
➡️ Делитесь с коллегами и сохраняйте себе, чтобы не потерять
⚡Машинное обучение
Machine Learning - запускаем лучшие ИИ модели, пишем код, погружаемся в нейросети
Ml Собеседование - подготовка к собесу по мл, алгоритмам, коду
Ml ru - актуальные статьи, новости, код и обучающие материалы
Ml Jobs - вакансии ML
ML Книги - актуальные бесплатные книги МО
ML чат
🏆 Golang
Golang собеседование - разбор задач и вопросов с собесов
Golang вакансии -работа для Go разработчика
Golang книги библиотека книг
Golang задачи и тесты
Golang чат
Golang news - новости из мира go
Golang дайджест
💥 Linux /Этичный хакинг
Linux Academy - гайды, секреты и лучшие материалы по Linux
Kali linux - погрузись в мир этичного хакинга и кибербезопасности
linux_kal - kali чат
Информационная безопасность
🚀 Data Science
Анализ данных - полезные фишки, код, гайды и советы, маст-хэв датасаентиста
Data Jobs - ds вакансии
Аналитик данных
Data Science книги - актуальные бесплатные книги
Big data
🛢Базы данных
Sql базы данных - научим работе с базами данных профессионально
Библиотека баз данных
SQL чат
Вакансии Sql аналитик данных
#️⃣C#
С# академия - лучший канал по c#
С# заметки — код, лучшие практики, заметки программиста c#
С# задачи и тесты
С# библиотека - актуальные бесплатные книги
C# вакансии - работа
🐍 Python
Python/django - самый крупный обучающий канал по Python
Python Собеседование - подготовка к собеседовению python и разбор алгоритмов
Pro python - статьи, новости, код и обучающие материалы
Python Jobs - вакансии Python
Python чат
Python книги
☕ Java
Java академия - java от Senior разработчика
Java вакансии
Java чат
Java вопросы с собеседований
Java книги
💻 C++
C++ академия
С++ книги
C++ задачи - подготовка к собеседовению мл, алгоритмам
C++ вакансии
⚡️ Frontend
Javascript академия - крупнейший js канал
React - лучшие гайды и советы по работе с react
Frontend - тутрориалы, уроки, гайды, код
PHP
Книги frontend
Задачи frontend
🦀 Rust
Rust программирование
Rust чат
Rust книги для программистов
📲 Мобильная разработка
Android разработка
Мобильный разработчик гайды и уроки
🇬🇧 Английский для программистов
🧠 Искусственный интеллект
ИИ и технологии
Neural - нейросети для работы и жизни
Книги ИИ
Artificial Intelligence
🔥 DevOPs
Devops для программистов
Книги Devops
🌟 Docker/Kubernets
Docker
Kubernets
📓 Книги
Библиотеки Книг для программситов
💼 Папка с вакансиями:
Папка Go разработчика:
Папка Python разработчика:
Папка Data Science
Папка Java разработчика
Папка C#
Папка Frontend
➡️ Делитесь с коллегами и сохраняйте себе, чтобы не потерять
⚡Машинное обучение
Machine Learning - запускаем лучшие ИИ модели, пишем код, погружаемся в нейросети
Ml Собеседование - подготовка к собесу по мл, алгоритмам, коду
Ml ru - актуальные статьи, новости, код и обучающие материалы
Ml Jobs - вакансии ML
ML Книги - актуальные бесплатные книги МО
ML чат
🏆 Golang
Golang собеседование - разбор задач и вопросов с собесов
Golang вакансии -работа для Go разработчика
Golang книги библиотека книг
Golang задачи и тесты
Golang чат
Golang news - новости из мира go
Golang дайджест
💥 Linux /Этичный хакинг
Linux Academy - гайды, секреты и лучшие материалы по Linux
Kali linux - погрузись в мир этичного хакинга и кибербезопасности
linux_kal - kali чат
Информационная безопасность
🚀 Data Science
Анализ данных - полезные фишки, код, гайды и советы, маст-хэв датасаентиста
Data Jobs - ds вакансии
Аналитик данных
Data Science книги - актуальные бесплатные книги
Big data
🛢Базы данных
Sql базы данных - научим работе с базами данных профессионально
Библиотека баз данных
SQL чат
Вакансии Sql аналитик данных
#️⃣C#
С# академия - лучший канал по c#
С# заметки — код, лучшие практики, заметки программиста c#
С# задачи и тесты
С# библиотека - актуальные бесплатные книги
C# вакансии - работа
🐍 Python
Python/django - самый крупный обучающий канал по Python
Python Собеседование - подготовка к собеседовению python и разбор алгоритмов
Pro python - статьи, новости, код и обучающие материалы
Python Jobs - вакансии Python
Python чат
Python книги
☕ Java
Java академия - java от Senior разработчика
Java вакансии
Java чат
Java вопросы с собеседований
Java книги
💻 C++
C++ академия
С++ книги
C++ задачи - подготовка к собеседовению мл, алгоритмам
C++ вакансии
⚡️ Frontend
Javascript академия - крупнейший js канал
React - лучшие гайды и советы по работе с react
Frontend - тутрориалы, уроки, гайды, код
PHP
Книги frontend
Задачи frontend
🦀 Rust
Rust программирование
Rust чат
Rust книги для программистов
📲 Мобильная разработка
Android разработка
Мобильный разработчик гайды и уроки
🇬🇧 Английский для программистов
🧠 Искусственный интеллект
ИИ и технологии
Neural - нейросети для работы и жизни
Книги ИИ
Artificial Intelligence
🔥 DevOPs
Devops для программистов
Книги Devops
🌟 Docker/Kubernets
Docker
Kubernets
📓 Книги
Библиотеки Книг для программситов
💼 Папка с вакансиями:
Папка Go разработчика:
Папка Python разработчика:
Папка Data Science
Папка Java разработчика
Папка C#
Папка Frontend
❤5🔥3
Number Item
------------
202 Book
202 Cartoon
202 Book
207 Book
205 Elephant
207 Elephant
208 Book
209 Biggy
209 Smoke
203 Smoke
Нужно сгруппировать по
number
и вывести уникальные item
для него, наподобие:202 Book Cartoon
207 Book Elephant
205 Elephant
208 Book
209 Biggy Smoke
203 Smoke
Как это можно сделать?
SELECT Number,
group_concat (DISTINCT Item separator ' ')
FROM TABLE
GROUP BY Number
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤28👍14👎4🔥4😢1
🔥 Крутой список игр, которые помогут вам изучить программирование без скучных лекций, но с интерактивным подходом:
• SQL Murder Mystery — вам предстоит стать шпионом Джаусом и использовать SQL для поиска загадочного убийцы;
• CryptoZombies — Игра разделена на уроки, где вы, используя язык программирования Solidity, создадете свою первую веб-игру 3.0, собирая армию зомби;
• Playground.tensorflow - браузерная игра, от tensorflow есть в которой можно настраивать и обучать нейросеть
• Screeps — игра, которая похожа на Dwarf Fortress, но здесь для управления колонией нужно писать код;
• Flexbox Froggy — милая игра про жаб, которая научит вас работе с CSS flexbox. Для полного погружения рекомендуется играть в определенной среде;
• Checkio — отличное упражнение для программистов на Python и TypeScript. Сборник интересных интерактивных игр, решение которых требует написания кода.
@DevOPSitsec
• SQL Murder Mystery — вам предстоит стать шпионом Джаусом и использовать SQL для поиска загадочного убийцы;
• CryptoZombies — Игра разделена на уроки, где вы, используя язык программирования Solidity, создадете свою первую веб-игру 3.0, собирая армию зомби;
• Playground.tensorflow - браузерная игра, от tensorflow есть в которой можно настраивать и обучать нейросеть
• Screeps — игра, которая похожа на Dwarf Fortress, но здесь для управления колонией нужно писать код;
• Flexbox Froggy — милая игра про жаб, которая научит вас работе с CSS flexbox. Для полного погружения рекомендуется играть в определенной среде;
• Checkio — отличное упражнение для программистов на Python и TypeScript. Сборник интересных интерактивных игр, решение которых требует написания кода.
@DevOPSitsec
👍12❤4🔥4
— Настроили под себя оптимальным образом настройки PostgreSQL, например, с помощью сервиса pgtune.
— Решены все инфраструктурные вопросы в части работы сети, железа, дисков и так далее.
— Вы понимаете как работает PostgreSQL в части модификации строк, как работает версионирование, что такое “мертвые” строки и так далее.
Сосредоточимся только на базовых вопросах обслуживания. Итак, поехали!
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤4🔥2
Они нужны для обеспечения безопасности ваших данных (скрыть приватные данные, ключи).
CREATE TABLE t1 (col1 INT, col2 INT INVISIBLE);
INSERT INTO t1 (col1, col2) VALUES(1, 2), (3, 4);
SELECT * FROM t1;
+------+
| col1 |
+------+
| 1 |
| 3 |
+------+
SELECT col1, col2 FROM t1;
+------+------+
| col1 | col2 |
+------+------+
| 1 | 2 |
| 3 | 4 |
+------+------+
https://dev.mysql.com/doc/refman/8.0/en/invisible-columns.html
@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤4🔥4👏1