首先,创建一个与您当前使用的数据库名称相同的数据库将很有帮助,以防止在您只想使用默认数据库并创建新表而无需显式声明数据库名称的情况下发生错误。
将“ skynotify”替换为您的用户名:
psql -d postgres -c "CREATE DATABASE skynotify ENCODING 'UTF-8';"
-d显式声明将哪个数据库用作此交互式会话期间未显式包含数据库名称的SQL语句的默认数据库。
获得PostgresQL服务器所包含内容的清晰图片的基础。
您必须连接到现有数据库才能交互使用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。
注意:在没有定义所有者的情况下创建的数据库将由当前用户拥有。
psql -d postgres -U postgres -h localhost
节目?没有标志,它默认为CLI用户,我会说它默认为“ postgres” admin db,但是我没有Mac可以测试。