首先,创建一个与您当前使用的名称相同的数据库很有帮助,以防止当您只想使用默认数据库并创建新表而不显式声明数据库名称时出现错误。
将“skynotify”替换为您的用户名:
psql -d postgres -c "CREATE DATABASE skynotify ENCODING 'UTF-8';"
-d 显式声明在此交互式会话期间未显式包含数据库名称的 SQL 语句将哪个数据库用作默认数据库。
清楚了解您的 PostgresSQL 服务器中包含的内容的基础知识。
您必须连接到现有数据库才能以交互方式使用 psql。幸运的是,您可以向 psql 询问数据库列表:
psql -l
.
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
----------------------------------+-----------+----------+-------------+-------------+-------------------
skynotify | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
myapp_dev | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
ruby-getting-started_development | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/skynotify +
| | | | | skynotify=CTc/skynotify
template1 | skynotify | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/skynotify +
| | | | | skynotify=CTc/skynotify
(6 rows)
这不会启动交互式控制台,它只是将基于文本的表格输出到终端。
正如另一个答案所说,始终会创建 postgres,因此当您只想让控制台开始在其他数据库上工作时,应该将其用作故障安全数据库。如果不存在,则列出数据库,然后使用其中任何一个。
以类似的方式,从数据库中选择表:
psql -d postgres -c "\dt;"
我的“postgres”数据库没有表,但任何数据库都会将基于文本的表输出到终端(标准输出)。
为了完整起见,我们也可以从表中选择所有行:
psql -d ruby-getting-started_development -c "SELECT * FROM widgets;"
.
id | name | description | stock | created_at | updated_at
----+------+-------------+-------+------------+------------
(0 rows)
即使返回零行,您也会得到字段名称。
如果您的表有十几行,或者您不确定,那么从行数开始了解数据库中有多少数据会更有用:
psql -d ruby-getting-started_development -c "SELECT count(*) FROM widgets;"
.
count
-------
0
(1 row)
不要说“1 行”让您感到困惑,它仅表示查询返回了多少行,但 1 行包含您想要的计数,在本例中为 0。
注意:在没有定义所有者的情况下创建的数据库将归当前用户所有。