我将使用Go语言作为后端,PostgreSQL作为数据库。我使用“github.com/lib/pq”驱动程序连接我的数据库。我有一个结构体,其中包含许多字段,并且其中包含一些JSON。
我的结构体看起来像这样:
我的结构体看起来像这样:
ApplyLeave1 struct {
LeaveId int
EmpId string
SupervisorEmpId string
LeaveDays float64
MDays float64
LeaveType string
DayType string
LeaveFrom time.Time
LeaveTo time.Time
AppliedDate time.Time
LeaveStatus string
ResultDate time.Time
Certificate []*CertificateInfo
}
CertificateInfo struct {
Id int64
FileName string
FileType string
FileLocation string
}
这个结构体很大,里面有一些json数组,并且我的数据库模式与结构体相同。就我所研究的,唯一的插入方式是使用查询,并将mystruct中的数据逐一插入到数据库中,例如像这样:
var leave ApplyLeave1
db.Exec("INSERT INTO TABLENAME(leaveid,empid,supervisorid,....) VALUES($1,$2,$3,$4,....)",leave.LeaveId,leave.EmpId,leave.SupervisorId,.....)
由于我的结构非常大,因此写起来太长了。是否有可能一次性插入整个结构,请指导我如何在数据库中插入JSON数组。感谢任何帮助。谢谢。
更新信息:
CREATE TABLE IF NOT EXISTS apply_leave1
(
leaveid serial PRIMARY KEY NOT NULL ,
empid varchar(10) NOT NULL REFERENCES employee(empid),
leavedays double precision NOT NULL DEFAULT 0 ,
mdays double precision NOT NULL DEFAULT 0 ,
leavetype varchar(20) NOT NULL DEFAULT '' ,
daytype text NOT NULL DEFAULT '',
leavefrom timestamp with time zone NOT NULL,
leaveto timestamp with time zone NOT NULL,
applieddate timestamp with time zone NOT NULL,
leavestatus varchar(15) NOT NULL DEFAULT '' ,
resultdate timestamp with time zone,
certificatestatus bool NOT NULL DEFAULT FALSE,
certificate json[])
在证书(json[])内部,我将拥有证书信息结构体中的所有字段,您可以在上面的结构体信息中查看。这里我将证书作为json[]提供。我不知道哪一个更好,是json还是json[]。
- 我需要存储每次请假超过两张证书信息
- 我希望以自增和唯一的证书id作为便于检索的标识符(因为我的请假id已经是主键和自增的了,我不知道是否可能)
- 我将使用请假id和证书id搜索证书信息。
- 我需要仅使用请假id和证书id检索某些证书信息字段。例如,仅使用文件名和文件类型。
- 我需要使用其ID更新特定证书的证书信息。
很抱歉这么详细。由于我是第一次在Postgres中使用json,我有很多疑问。请谅解我的无知问题。非常感谢您的帮助。谢谢!