ホームページ >バックエンド開発 >Golang >JSON 配列を含む複雑な構造体を PostgreSQL データベースに直接挿入するにはどうすればよいですか?

JSON 配列を含む複雑な構造体を PostgreSQL データベースに直接挿入するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-03 17:55:03826ブラウズ

How can I insert complex structs, including JSON arrays, directly into a PostgreSQL database?

PostgreSQL DB に構造体を直接挿入できますか?

PostgreSQL では、構造体のフィールドが複雑であるか、JSON が含まれている場合、構造体をデータベースに直接挿入するのは簡単ではありません。配列。ただし、外部ライブラリを利用することで、より効率的な方法で挿入機能を実現できます。

sqlx ライブラリを使用したソリューション

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".

<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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。