将SQL DDL文件上传到PostgreSQL数据库

4

我创建了这个SQL文件,想要将这个DDL(数据定义语言)文件上传到我的PostgreSQL服务器上。我的服务器目前运行在Ubuntu 12.04上。

CREATE DATABASE *;

--Create Tables
CREATE TABLE USER(
    user_id      varchar(36)    NOT NULL,
    username     varchar(36)    NOT NULL,
    user_type    varchar(36)    NOT NULL,
    name         varchar(36)    NOT NULL,
    email        varchar(36)    NOT NULL,
    picture      varchar(36)    NOT NULL
);

CREATE TABLE PRODUCT(
    product_id           varchar(36)    NOT NULL,
    product_name         varchar(36)    NOT NULL,
    product_type         varchar(36)    NOT NULL,
    product_price        varchar(36)    NOT NULL,
    product_available    varchar(36)    NOT NULL
);

CREATE TABLE TRANSACTION(
    transaction_id    varchar(36)    NOT NULL,
    user_id           varchar(36)    NOT NULL,
    product_id        varchar(36)    NOT NULL
);

CREATE TABLE INVENTORY(
    product_id           varchar(36)    NOT NULL,
    product_name         varchar(36)    NOT NULL,
    product_available    varchar(36)    NOT NULL
);
1个回答

11

运行脚本

要以SQL脚本的形式运行DDL,您应该使用psql,与交互式连接服务器时使用的相同命令。

psql -h the.server.hostname -f my_script.sql the_database

我建议使用 ON_ERROR_STOP=1-1,这样可以在单个事务中运行DDL,并在任何错误发生时中止。

psql -v ON_ERROR_STOP=1 -1 -h the.server.hostname -f my_script.sql the_database

创建数据库

您不能创建数据库并立即开始创建表格。您必须连接到其他数据库来运行create database,如果您已经连接到其他数据库,那么表格将在该数据库中创建。

您可以在CREATE DATABASE之后放置 \c 数据库名命令,这样它就会创建数据库并切换到该数据库。但这通常是不明智的:如果创建失败,脚本将继续在错误的数据库中创建表格,除非您使用ON_ERROR_STOP。 如果您创建并切换到新数据库,则无法使用-1(在单个事务中运行)。

相反地,请手动先CREATE DATABASE,或者使用一个单独的脚本进行创建。这样,您可以合理地运行您的DDL脚本。

DDL

您的模式需要一些改进。

没有主键。

没有外键。

在任何地方都使用varchar(36),即使在名称和电子邮件地址等明显不适当的地方。 如果没有特定原因需要限制字段长度,请使用未绑定的text类型,或者varchar没有长度(在PostgreSQL中它们是相同的)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接