postgres:从命令行在数据库中创建表

Posted

技术标签:

【中文标题】postgres:从命令行在数据库中创建表【英文标题】:postgres: create table in database from the command line 【发布时间】:2013-02-21 11:06:23 【问题描述】:

我试图在 postgres 中创建一个表,但它最终在错误的数据库中。

这就是我所做的:在我的 sql 脚本中,我最初创建了一个用户和一个数据库,然后是一个表。代码会解释更多:

drop database if exists sinfonifry;
drop role if exists sinfonifry;

-- create the requested sinfonifry user

create user sinfonifry createdb createuser password 'some_password';

-- create a sinfonifry database
create database sinfonifry owner sinfonifry;

DROP TABLE if exists sinf01_host;

CREATE TABLE sinf01_host
(
  host_id bigserial NOT NULL, -- The primary key
  host_ip inet NOT NULL, -- The IP of the host
  host_name character varying(255) NOT NULL, -- The name of the host
  CONSTRAINT "PK_host" PRIMARY KEY (host_id )
)
WITH (
  OIDS=FALSE
);

ALTER TABLE sinf01_host OWNER TO sinfonifry;

现在,这是一个自动化脚本的一部分,并从命令行执行,例如:

sudo -u postgres psql < create_db.sql

我已经在系统上创建了 postgres 用户。

问题来了:该表最终在 postgres 数据库中,公共模式,而不是在 sinfonifry 数据库中,公共模式。

如何在我想要的数据库中创建表?

谢谢,干杯,f.

【问题讨论】:

在创建任何对象之前连接到新创建的数据库。 【参考方案1】:

在创建数据库命令发出连接后:

create database sinfonifry owner sinfonifry;
\connect sinfonifry

【讨论】:

以上是关于postgres:从命令行在数据库中创建表的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 不在 Postgres 中创建表

如何使用 Postgres 在 SQLAlchemy 中创建表?

在 postgres 8.1 中创建表时出错

在 Postgres 中创建表时将空列设置为带时区的时间戳

如何在oracle10G中创建表空间

oracle中创建表如何不产生日志