我在后端使用Go。我尝试编写一个使用数据库名称并使用该名称创建PostgreSQL数据库的函数。此功能之后,应在该数据库中创建表(我已经为此任务创建了一个sql脚本)
所以主要的问题是我不理解如何编写一个将创建PostgreSQL数据库的函数。我曾想过要创建一个.sql文件,并以某种方式将数据库名称传递给该文件(例如,在.sql文件中查找字符串,该字符串看起来像{{dbname}}并用db name替换),但是可能存在一个更好的方法?
这是我的.sql文件,应该在新的PostgreSQL数据库中创建表
create table "reviews"
(
review_id uuid not null
constraint review_pk
primary key,
user_id uuid not null,
rating float,
comment text,
date date not null
);
create unique index reviews_review_id_uindex
on "reviews" (review_id);
create unique index reviews_user_id_uindex
on "reviews" (user_id);
create table "sections"
(
section_id uuid not null
constraint section_pk
primary key,
title text not null,
color text,
created_at date not null,
updated_at date not null,
deleted boolean default false
);
create unique index sections_section_id_uindex
on "sections" (section_id);
答案 0 :(得分:2)
尝试一下
package main
import (
"database/sql"
"log"
_ "github.com/lib/pq"
)
func main() {
conninfo := "user=postgres password=yourpassword
host=127.0.0.1 sslmode=disable"
db, err := sql.Open("postgres", conninfo)
if err != nil {
log.Fatal(err)
}
dbName := "testdb"
_, err = db.Exec("create database " + dbName)
if err != nil {
//handle the error
log.Fatal(err)
}
//Then execute your query for creating table
_, err = db.Exec("CREATE TABLE example ( id integer,
username varchar(255) )")
if err != nil {
log.Fatal(err)
}
}
注意:所有查询语句都不支持postgress中的参数,例如("create database $1", "testdb")
不起作用。