在 PostgreSQL 中,如果結構體欄位很複雜或包含 JSON,則將結構體直接插入資料庫並不簡單陣列。但是,透過利用外部程式庫,您可以更有效地實現插入功能。
sqlx 函式庫 (github.com/jmoiron/sqlx) 提供了一個優雅的解決方案對於這個問題。要使用它,請先用 db 標籤標記每個結構體欄位以指定其資料庫欄位名稱。
<code class="go">type ApplyLeave1 struct { LeaveId int `db:"leaveid"` EmpId string `db:"empid"` SupervisorEmpId string `db:"supervisorid"` // ... other fields }</code>
然後,使用 sqlx 中的 NamedExec 函數將整個結構體插入資料庫。
<code class="go">import ( "github.com/jmoiron/sqlx" "log" ) query := `INSERT INTO TABLENAME(leaveid, empid, supervisorid, ...) VALUES(:leaveid, :empid, :supervisorid, ...)` var leave1 ApplyLeave1 db, err := sqlx.Connect("postgres", "user=foo dbname=bar sslmode=disable") if err != nil { log.Fatalln(err) } _, err = db.NamedExec(query, leave1) if err != nil { log.Fatalln(err) }</code>
插入JSON 數組
要處理結構中的JSON 數組,您可以透過使用db:"array" 標記字段來使用PostgreSQL 的數組資料。
<code class="go">type CertificateInfo struct { Id int64 `db:"id"` FileName string `db:"filename"` FileType string `db:"filetype"` FileLocation string `db:"filelocation"` } type ApplyLeave1 struct { // ... other fields Certificates []CertificateInfo `db:"certificates,array"` }</code>
按照以下步驟,您可以將包括 JSON 陣列在內的複雜結構無縫插入到 PostgreSQL 資料庫中,從而簡化程式碼並提高資料插入效率。
以上是如何將複雜的結構(包括 JSON 陣列)直接插入 PostgreSQL 資料庫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!