Los clientes de bases de datos de línea de comandos, además de permitir la ejecución de consultas SQL, suelen incorporar comandos propios del motor de bases de datos. Por ejemplo, comandos para obtener información sobre el motor, las bases de datos que posee una instancia o las tablas de una base de datos.

Este artículo muestra cómo se ejecutan los comandos psql (PostgreSQL) correspondientes a las tareas más habituales con el cliente mysql (MySQL). Apunta a aquellos Administradores que tienen experiencia trabajando con MySQL y se topan con un servidor Postgres por primera vez.



use

El comando use (\u) se utiliza en MySQL para seleccionar una base de datos.

Conectarse a una db desde mysql:

mysql> use linuxito
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql>

El comando correspondiente en postgres es \c.

Conectarse a una db desde psql:

postgres=# \c linuxito
You are now connected to database "linuxito" as user "postgres".
linuxito=#

show databases

Este comando lista todas las bases de datos que posee un servidor MySQL.

Mostrar todas las bases de datos desde mysql:

mysql> show databases;

Listar todas las bases de datos desde psql:

postgres=# \l

show tables

show tables y show databases son comandos específicos de MySQL (no son parte del estándar SQL). show tables lista todas las tablas de una base de datos:

mysql> show tables;

En psql es posible utilizar el comando \dt:

linuxito=# \dt

En ambos casos antes es necesario conectarse a una base de datos previamente.

Cabe destacar que es posible obtener esta información utilizando una consulta SQL tanto en MySQL como Postgres. Se debe listar el contenido de la tabla "tables" perteneciente a la base de datos "information_schema":

select * from information_schema.tables where table_type='BASE TABLE' and table_schema not in ('pg_catalog', 'information_schema');

Si se desea listar sólo las tablas de una base de datos específica (por ejemplo "linuxito"), utilizar:

select * from information_schema.tables where table_schema='linuxito';

describe

En MySQL es posible obtener la descripción de las columnas de una tabla utilizando describe. Por ejemplo, si se desea obtener la descripción de las columnas de la tabla "page":

mysql> describe page;
+-------------------+---------------------+------+-----+----------------+----------------+
| Field             | Type                | Null | Key | Default        | Extra          |
+-------------------+---------------------+------+-----+----------------+----------------+
| page_id           | int(10) unsigned    | NO   | PRI | NULL           | auto_increment |
| page_namespace    | int(11)             | NO   | MUL | NULL           |                |
| page_title        | varchar(255)        | NO   |     | NULL           |                |
| page_restrictions | tinyblob            | NO   |     | NULL           |                |
| page_counter      | bigint(20) unsigned | NO   |     | 0              |                |
| page_is_redirect  | tinyint(3) unsigned | NO   | MUL | 0              |                |
| page_is_new       | tinyint(3) unsigned | NO   |     | 0              |                |
| page_random       | double unsigned     | NO   | MUL | NULL           |                |
| page_touched      | binary(14)          | NO   |     |                |                |
| page_latest       | int(10) unsigned    | NO   |     | NULL           |                |
| page_len          | int(10) unsigned    | NO   | MUL | NULL           |                |
+-------------------+---------------------+------+-----+----------------+----------------+
11 rows in set (0.00 sec)

En psql es posible obtener la misma información con \d:

portal=# \d image
                  Table "public.image"
    Column    |            Type             | Modifiers 
--------------+-----------------------------+-----------
 imageid      | bigint                      | not null
 modifieddate | timestamp without time zone | 
 text_        | text                        | 
 type_        | character varying(75)       | 
 height       | integer                     | 
 width        | integer                     | 
 size_        | integer                     | 
Indexes:
    "image_pkey" PRIMARY KEY, btree (imageid)
    "ix_6a925a4d" btree (size_)

source

El comando source de MySQL se utiliza para ejecutar sentencias SQL desde un archivo:

mysql> source backup.sql;

En Postgres se utiliza \i:

linuxito=# \i backup.sql

Obtener ayuda sobre los comandos específicos del motor

Este debería ser el primer comando a utilizar o conocer. En MySQL se obtiene ayuda sobre los comandos específicos del motor (los que justamente trata este artículo) con el comando help (\h o \?):

mysql> help

Sin embargo, en Postgres, el comando \h muestra la referencia de comandos SQL. Para obtener ayuda sobre los comandos específicos de Postgres se debe utilizar \?:

postgres=# \?

Ayuda del lenguaje SQL

En MySQL se puede obtener ayuda sobre cualquier sentencia del lenguaje SQL utilizando help:

mysql> help select

En postgres, la ayuda sobre el lenguaje SQL se obtiene específicamente con \h:

postgres=# \h select

Cerrar la conexión con el servidor

Es posible cerrar la conexión con el servidor MySQL (por ende cerrando el cliente mysql) ejecutando exit, quit o \q:

mysql> exit

En psql sólo se puede utilizar \q:

postgres=# \q


Tal vez pueda interesarte


Compartí este artículo