sql >> データベース >  >> RDS >> Mysql

SQLドライバーに移動してインターフェイス{}列の値を取得します

    このhttps://stackoverflow.com/questions/20271123/goを参照してください-lang-sql-in-parameters 私の答えが基づいている答え。これを使用すると、次のようなことができます:

    var myMap = make(map[string]interface{})
    rows, err := db.Query("SELECT * FROM myTable")
    defer rows.Close()
    if err != nil {
        log.Fatal(err)
    }
    colNames, err := rows.Columns()
    if err != nil {
        log.Fatal(err)
    }
    cols := make([]interface{}, len(colNames))
    colPtrs := make([]interface{}, len(colNames))
    for i := 0; i < len(colNames); i++ {
        colPtrs[i] = &cols[i]
    }
    for rows.Next() {
        err = rows.Scan(colPtrs...)
        if err != nil {
            log.Fatal(err)
        }
        for i, col := range cols {
            myMap[colNames[i]] = col
        }
        // Do something with the map
        for key, val := range myMap {
            fmt.Println("Key:", key, "Value Type:", reflect.TypeOf(val))
        }
    }
    

    リフレクトパッケージを使用すると、最後のループで示されているように、必要に応じて各列のタイプを取得できます。

    これは一般的なものであり、任意のテーブル、列数などで機能します。



    1. MySqlを使用して1つのクエリでMSSqlテーブルをMySqlテーブルに内部結合できる方法がありますか?

    2. InnoDBを解決する方法:./ ibdata1 mysqlエラーをロックできませんか?

    3. すべてのエントリがミディアムテキストサイズのフィールドに収まる場合、MySQLロングテキストサイズのフィールドを使用することのデメリットは何ですか?

    4. SQLServerデータベースをあるインスタンスから別のインスタンスにコピーする方法