Редактор запросов и IntelliSense

Расширение PostgreSQL для Visual Studio Code предоставляет редактор запросов с функцией автодополнения IntelliSense, возможностью выполнять запросы с помощью клавиатуры, таблицей результатов с параметрами экспорта и встроенными готовыми фрагментами кода. Вы записываете SQL на вкладку стандартного редактора VS Code и запускаете его на любом подключенном сервере PostgreSQL, не выходя из интегрированной среды разработки.

Необходимые условия

Открытие редактора запросов

Вы можете открыть новый редактор запросов несколькими способами:

  • В дереве "Подключения" щелкните правой кнопкой мыши узел базы данных и выберите "Создать запрос".
  • Запустите PGSQL: New Query из палитры команд (CTRL+SHIFT+P).
  • Откройте или создайте любой файл с расширением .sql .

Редактор запросов использует текстовый редактор VS Code с режимом языка SQL. При подключении редактора к серверу расширение активирует IntelliSense и включает команды выполнения запросов.

Подключение и отключение

Чтобы связать редактор запросов с подключением к базе данных:

Действие Windows или Linux macOS
Подключиться CTRL+SHIFT+C Cmd+SHIFT+C
Отключить CTRL+SHIFT+D Cmd+SHIFT+D

Вы также можете запустить PGSQL: Connect или PGSQL: Disconnect из палитры команд.

Изменение контекста базы данных

Активная база данных для выполнения запросов отображается в строке состояния VS Code. Чтобы переключиться на другую базу данных, выполните приведенные действия.

  1. Выберите имя базы данных в строке состояния или запустите PGSQL: Change PostgreSQL Database в палитре команд.
  2. Выберите целевую базу данных из списка выбора.

Новый контекст базы данных применяется ко всем последующим выполнениям запросов в этом редакторе.

Объектив состояния подключения

Если pgsql.showConnectionStatusLens имеет значение true (по умолчанию), редактор отображает в верхней части файла линзу кода, которая показывает текущее состояние подключения. Выберите объектив для подключения или изменения баз данных.

IntelliSense

IntelliSense предоставляет автоматические завершения с учетом контекста при вводе SQL в редакторе запросов. Расширение анализирует схему подключенной базы данных, чтобы предложить таблицы, столбцы, функции и ключевые слова.

IntelliSense активируется автоматически по мере ввода или можно активировать его вручную с помощью ctrl+Space (Cmd+Space в macOS). Доступны следующие типы завершения:

Тип завершения Описание
Keyword Ключевые слова SQL, такие как SELECT, FROMWHERE
Таблица / Представление Таблицы и представления в текущей базе данных
Column Столбцы для таблиц, на которые ссылается запрос
Function Встроенные и пользовательские функции
Schema Доступные схемы в базе данных
Предложение о присоединении JOIN условия на основе связей по внешнему ключу

Если после ссылки на таблицу ввести JOIN, IntelliSense предложит связанные таблицы и заполнит условие соединения на основе связей по внешним ключам.

Настройка IntelliSense

Включите или отключите IntelliSense с параметром pgsql.intelliSense.enableIntelliSense . IntelliSense включен по умолчанию.

Обновление кэша IntelliSense

При изменении схемы базы данных (например, путем добавления таблиц или столбцов) и IntelliSense не отражает эти изменения, обновите кэш:

  1. Откройте палитру команд (CTRL+SHIFT+P).
  2. Выполните команду PGSQL: Refresh IntelliSense Cache.

Используйте эту команду после миграции схем, изменений DDL или изменений, внесенных за пределами текущего сеанса редактора.

Выполнение запросов

Расширение предоставляет несколько способов выполнения запросов SQL к подключенной базе данных.

Выполнение запроса

Используйте запрос PostgreSQL для запуска SQL в редакторе. При выборе определенного текста выполняется только выбранный текст. Если ничего не выбрано, выполняется всё содержимое редактора.

Действие Windows или Linux macOS
Выполнение запроса PostgreSQL Ctrl+Shift+E или Shift+Enter Cmd+Shift+E или Shift+Enter
Выполнение текущей инструкции PostgreSQL Ctrl+Shift+Enter Ctrl+Shift+Ввод

Выполнить текущую инструкцию PostgreSQL выполняет только инструкцию SQL в текущей позиции курсора. Используйте эту команду, если в редакторе несколько инструкций и хотите запустить ее без выбора.

Отмена запроса

Чтобы остановить длительный запрос, выполните команду PGSQL: Cancel PostgreSQL Query из палитры команд. В строке состояния отображается ход выполнения во время выполнения запроса.

Панель результатов запросов PostgreSQL

После выполнения запроса результаты отображаются на панели результатов запросов PostgreSQL под редактором. Панель имеет до трех вкладок в зависимости от типа запроса.

Вкладка "Результаты"

На вкладке "Результаты " отображается сетка результатов. Когда запрос возвращает несколько результирующих наборов, каждый набор отображается в собственной сетке на вкладке.

Сетка результатов предоставляет следующие функции для изучения данных:

  • Сортировка: щелкните правой кнопкой мыши заголовок столбца и выберите "Сортировка по возрастанию " или " Сортировка по убыванию". Нажмите кнопку "Очистить сортировку ", чтобы удалить сортировку.
  • Фильтр. Щелкните правой кнопкой мыши заголовок столбца и выберите "Показать фильтр ", чтобы сузить отображаемые строки.
  • Изменение размера столбцов: перетащите границы столбцов, чтобы изменить ширину, или включите pgsql.resultsGrid.autoSizeColumns (включено по умолчанию), чтобы автоматически подбирать ширину столбцов по видимому содержимому.
  • Нумеровка строк: номера строк отображаются в левой части сетки.
  • Поиск. Используйте поле поиска на панели инструментов результатов для поиска значений в сетке.

Присоединенные запросы и более широкие результирующие наборы используют тот же интерфейс сетки, что позволяет сортировать, фильтровать и проверять связанные столбцы без выхода из редактора.

Копирование данных

Щелкните правой кнопкой мыши в сетке результатов для доступа к параметрам копирования:

Опция Описание
Выбрать все. Выберите все строки в результирующем наборе
Copy Копирование выбранных ячеек в буфер обмена
Копирование с заголовками Скопировать выбранные ячейки с заголовками столбцов
Копирование заголовков Копирование только заголовков столбцов

Вы также можете использовать эти сочетания клавиш в области результатов (можно настроить с помощью pgsql.shortcuts параметра):

Действие Ярлык по умолчанию
Выбор копирования CTRL+C
Выберите все CTRL+A
Переключить панель результатов CTRL+ALT+R
Переключить панель сообщений CTRL+ALT+Y
Сетка результатов фокусировки CTRL+ALT+G
Предыдущая сетка результатов Ctrl+Вверх
Следующая сетка результатов CTRL+СТРЕЛКА ВНИЗ

Tip

Установите для pgsql.copyIncludeHeaders значение true, чтобы при каждом копировании включались заголовки столбцов. Установите для pgsql.copyRemoveNewLine значение false, чтобы сохранить символы новой строки в скопированных ячейках.

Сохранение результатов

Экспорт результатов запроса, нажав кнопку сохранения на панели инструментов результатов:

Кнопка Format
Сохранение в формате CSV Значения, разделенные запятыми (CSV)
Сохранение в формате JSON Нотация объектов JavaScript (.json)
Сохранение как Excel книга Microsoft Excel (.xlsx)

Настройте поведение экспорта CSV с помощью следующих параметров:

Setting Описание По умолчанию
pgsql.saveAsCsv.delimiter Символ разделителя столбцов ,
pgsql.saveAsCsv.lineSeparator Разделитель строк Системные настройки по умолчанию
pgsql.saveAsCsv.textIdentifier Символ для обрамления текстовых полей "
pgsql.saveAsCsv.encoding Кодировка файлов utf-8
pgsql.saveAsCsv.includeHeaders Включить заголовки столбцов true

Открытие результатов на отдельной вкладке

Для больших наборов результатов откройте результаты в отдельной вкладке редактора, чтобы было больше места. Выберите "Открыть на новой вкладке" на панели инструментов результатов или задайте pgsql.openQueryResultsInTabByDefault значение true в параметрах, чтобы всегда открывать результаты на отдельной вкладке.

Вкладка "Сообщения"

На вкладке "Сообщения" отображаются сведения о выполнении запроса, включая сообщения о состоянии, количество строк и время выполнения. Каждое сообщение содержит метку времени.

Область сообщений открывается по умолчанию вместе с сеткой результатов. Чтобы изменить это поведение, установите значение pgsql.messagesDefaultOpenfalse.

Tip

Установите pgsql.showBatchTime в значение true, чтобы отображать время выполнения для отдельных пакетов.

Вкладка "План запроса"

При запуске EXPLAIN или EXPLAIN ANALYZE запросе вкладка "План запроса " отображается вместе с результатами и сообщениями. Выберите эту вкладку, чтобы открыть встроенный визуализатор плана выполнения или нажмите кнопку визуализировать план запроса на панели результатов запросов PostgreSQL.

Вы также можете запустить план визуализации плана запросов (PostgreSQL) из палитры команд, чтобы визуализировать план текущего запроса.

Подробные сведения о визуализаторе плана выполнения см. в разделе Визуализатор плана запроса.

Представление графов для запросов в Apache AGE

Когда запрос возвращает графовые результаты из Apache AGE, расширение обнаруживает cypher() вызовы функций и шаблоны Apache AGE (agtype, ag_catalog) и открывает пакет результатов в представлении графа вместо стандартной сетки.

  • Переключение представлений: выберите "Переключиться на граф " на панели инструментов результатов, чтобы перейти из сетки в представление графа или переключиться на таблицу , чтобы вернуться в сетку.
  • Проверьте элементы: выберите узлы или края в графе, чтобы просмотреть их метки и свойства на панели свойств .
  • Навигация: Используйте кнопки панели инструментов графика: Увеличить, Уменьшить, Подогнать по размеру и Сброс.
  • Экспорт: выберите "Сохранить как PNG " на панели инструментов графа, чтобы экспортировать граф в виде изображения.

Note

Если запрос не возвращает графируемые данные, расширение сохраняет стандартное представление сетки.

Фрагменты кода

Это расширение включает встроенные фрагменты кода PostgreSQL, которые помогают создавать общие шаблоны SQL. Введите префикс фрагмента в редакторе и нажмите клавишу TAB , чтобы развернуть фрагмент кода. Перемещайтесь клавишей Tab по заполнителям в развернутом фрагменте кода, чтобы заполнить значения.

Доступные фрагменты кода

Префикс Описание
pgCreateTable Создайте базовую таблицу с первичным ключом
pgDropDatabase Удаление существующей базы данных PostgreSQL
pgDropTable Удаление таблицы
pgInsertData Вставка строки в таблицу
pgSelectAll Простой SELECT * запрос
pgUpdateRows Обновление данных в таблице
pgDeleteRows Удаление данных из таблицы
pgCreateIndex Создание индекса в указанном столбце
pgCreateUser Создание новой роли или пользователя
pgGrantPrivileges Предоставление привилегий для таблицы пользователю
pgCTE Пример общего табличного выражения (CTE)
pgLeftJoin LEFT JOIN Пример запроса
pgExplainAnalyze EXPLAIN ANALYZE запрос сведений о производительности
pgListTables Выведите список всех таблиц в указанной схеме

Tip

Введите pg в редакторе и просмотрите предложения IntelliSense, чтобы просмотреть все доступные фрагменты кода.

История запросов

В представлении журнала запросов на панели действий PostgreSQL автоматически фиксируются выполняемые запросы, поэтому их можно повторно использовать позже.

Управление журналом запросов

Действие Как сделать
Открытие запроса Выберите запись в представлении журнала запросов , чтобы загрузить ее в новый редактор
Выполнение запроса Щелкните правой кнопкой мыши запись и выберите команду "Выполнить запрос"
Скопируйте запрос Щелкните правой кнопкой мыши запись и выберите " Копировать запрос"
Удаление записи Щелкните правой кнопкой мыши запись и выберите пункт "Удалить"
Очистить все Нажмите кнопку "Очистить все журналы запросов " на панели инструментов представления
Просмотр в палитре команд Запуск PGSQL: Open Query History in Command Palette

Управление записью истории

Используйте панель инструментов представления журнала запросов для запуска или приостановки записи:

  • Запуск записи журнала запросов: возобновление записи выполненных запросов.
  • Приостановка записи журнала запросов: остановка записи.

Настройте поведение журнала с помощью следующих параметров:

Setting Описание По умолчанию
pgsql.enableQueryHistoryFeature Включение функции журнала запросов true
pgsql.enableQueryHistoryCapture Автоматически записывать выполненные запросы true
pgsql.queryHistoryLimit Максимальное количество сохраненных записей журнала 20