GoLand 2022.3 Help

How to run PostgreSQL queries from GoLand

Step 1. Clone files from repositories

For example purposes, we are going to use the following two repositories: Sakila dump files (https://github.com/DataGrip/dumps) and Docker-compose files (https://github.com/DataGrip/datagrip-documentation). Sakila repository includes scripts that generate the structure of the Sakila database and scripts that add data to database objects. Docker repository includes YAML files that define services, networks, and volumes.

Enable version control integration

  1. Click VCS | Enable Version Control Integration on the menu bar.

  2. In the Enable Version Control Integration dialog, ensure that Git is selected in the drop-down list and click OK.

    Enable version control integration

Clone repositories

  1. Click Git | Clone.

  2. In the URL field, copy and paste the following web URL:

    • Sakila dump files:

      https://github.com/DataGrip/dumps.git
    • Docker-compose files:

      https://github.com/DataGrip/datagrip-documentation.git
  3. In the Directory field, click the folder icon (The folder icon) and specify a directory for the repository files.

    Clone repositories

Step 2. Run a Docker container

For this tutorial, we are going to run a PostgreSQL container for Docker (from the datagrip-documentation repository). In the Docker directory of the repository, you can find .env and docker-compose.yml files. .env includes credentials for the PostgreSQL service. docker-compose.yml defines how the service is created and configured.

The service name is the first line of the service definition (before the JDBC URL). In our example, the service name is postgresql_12, the JDBC URL is jdbc:postgresql://localhost:54333/guest?user=guest&password=guest.

postgresql_12: # jdbc:postgresql://localhost:54333/guest?user=guest&password=guest container_name: postgresql_12 ports: - "54333:5432" image: postgres:12-alpine env_file: .env healthcheck: test: "exit 0"

You can run the container from a command line by running:

docker-compose up -d postgresql_12
Note that you must navigate to the directory of the docker-compose.yml file first.

Alternatively, you can enable and use the Docker plugin in GoLand.

Getting started

Enable the Docker plugin

This functionality relies on the Docker plugin, which is bundled and enabled in GoLand by default. If the relevant features are not available, make sure that you did not disable the plugin.

  1. Press Ctrl+Alt+S to open the IDE settings and select Plugins.

  2. Open the Installed tab, find the Docker plugin, and select the checkbox next to the plugin name.

Install and run Docker

For information about installing and running Docker, see the Docker documentation.

    Connect to the Docker daemon

    1. Press Ctrl+Alt+S to open the IDE settings and select Build, Execution, Deployment | Docker.

    2. Click The Add button to add a Docker configuration and specify how to connect to the Docker daemon.

      The connection settings depend on your Docker version and operating system.

      The Connection successful message should appear at the bottom of the dialog.

      The Docker connection settings
    3. Open the Services tool window (View | Tool Windows | Services or Alt+8), select the configured Docker connection node Docker node and click The Connect button, or select Connect from the context menu.

      The Docker tool window, connected to Docker

      To edit the Docker connection settings, select the Docker node and click The Edit Configuration button on the toolbar, or select Edit Configuration from the context menu.

      You can also click the Add Service menu and select Docker Connection to add a Docker connection directly from the Services tool window. If you have Docker contexts configured, you can select Docker Connections from Docker Contexts to add the corresponding connections.

    Create the Docker-compose deployment configuration

    1. In the Services tool window (View | Tool Windows | Services), right-click the Docker node and select Deploy.

    2. In the popup window, select Create Docker-compose Deployment.

    3. In the Create Deployment Configuration dialog, click the Browse icon of the Compose file(s) field.

    4. In the Docker Compose Configuration Files dialog, click the Add button and navigate to the compose file. The Compose YAML file defines services, networks, and volumes. In our case, it is docker-compose.yml

    5. In the Docker Compose Configuration Files dialog, click OK.

    6. In the Service(s) field, type postgresql_12.

    7. Click Run.

      As a result, you can see the postgresql_12 running container in the Services tool window.

      Create the Docker-compose deployment configuration

    Step 3. Connect to a data source

    Depending on a database vendor (MySQL, PostgreSQL, Oracle), you need to create a corresponding data source connection. In this tutorial, we will create a PostgreSQL connection. If you want to connect to other database management systems (DBMS), refer to Database connection.

    1. In the Database tool window (View | Tool Windows | Database), click the Data Source Properties icon The Data Source Properties icon.

    2. In the Data Sources and Drivers dialog, click the Add icon (The Add icon) and select PostgreSQL.

    3. At the bottom of the data source settings area, click the Download missing driver files link. As you click this link, GoLand downloads drivers that are required to interact with a database. The IDE does not include bundled drivers in order to have a smaller size of the installation package and to keep driver versions up-to-date for each IDE version.

      You can specify your drivers for the data source if you do not want to download the provided drivers. For more information about creating a database connection with your driver, see Add a user driver to an existing connection.

    4. In the URL field, copy and paste the JDBC URL: jdbc:postgresql://localhost:54333/guest?user=guest&password=guest. JDBC URL for other DBMS, see in docker-compose.yml. You can open docker-compose.yml in a text editor.

    5. (Optional) In the Name field, delete the current name and type a new name for the connection (for example, PostgreSQL).

    6. To ensure that the connection to the data source is successful, click the Test Connection link.

    Integration with PostgreSQL

    Step 4. Attach a directory to the project

    To run dump files from the project in GoLand, attach a directory with dump files.

    1. Click File | Open.

    2. Navigate to the folder that you want to attach. In this tutorial, this folder is dumps that you cloned on Step 1 (Sakila dump files).

    3. Click Open.

    4. In the Open Project dialog, click Attach.

    Attach a directory to the project

    Step 5. Run the dump files

    Create the database structure

    1. In the Project (View | Tool Windows | Project) tool window, navigate to the postgres-sakila-db tree node.

    2. Expand postgres-sakila-db tree node.

    3. Right-click the postgres-sakila-schema.sql and select Run postgres-sakila-schema .sql. Alternatively, click the postgres-sakila-schema.sql file and press Ctrl+Shift+F10.

    4. In the Edit Configuration dialog, click the Add button and select PostgreSQL.

    5. Press Run.

      Run dump files

    Load sample data to the database

    1. In the Project (View | Tool Windows | Project) tool window, navigate to the postgres-sakila-db tree node.

    2. Expand postgres-sakila-db tree node.

    3. Right-click the postgres-sakila-insert-data.sql and select Run postgres-sakila-insert-data.sql. Alternatively, click the postgres-sakila-insert-data.sql file and press Ctrl+Shift+F10.

    4. In the Edit Configuration dialog, click the Add button and select PostgreSQL.

    5. Press Run.

    Step 6. Fetch dependencies from the Go code

    To issue a query to PostgreSQL, we are going to use the sqlx library that provides a set of extensions for the Go standard database/sql library. For more information about the library, read about sqlx on GitHub.

    main.go at GitHub: click the link to get the code from the GiHub repository.

    1. Create a Go project in GoLand.

    2. Right-click the root folder in the project and navigate to New | Go File.

    3. In the New Go File dialog, type main in the Name field and click OK.

    4. Copy the attached code snippet and paste it to the main.go file.

    5. Place the caret at the "github.com/jmoiron/sqlx" import line, press Alt+Enter and click go get -t github.com/jmoiron/sqlx.

    Step 7. Run the configuration

    • To run the configuration, click the Run icon (The Run icon) in the gutter near the main function and select Run 'go build main.go'.

      Run the configuration
    Last modified: 12 December 2022