为了账号安全,请及时绑定邮箱和手机立即绑定

将“ SELECT *”列读入[]字符串中

将“ SELECT *”列读入[]字符串中

Go
慕桂英3389331 2021-05-12 17:23:31
我想编写一个Go程序,以使用将数据库表中的行转储到csv文件中SELECT *。Go提供了出色的sql和csv api,但是csv希望根据它们的类型Scan在Rows“填充”字段中使用字符串数组和方法。由于我以前不知道该表,所以我不知道有多少列以及它们的类型是什么。这是我在 Go 中的第一个程序,所以我有点挣扎。如何最好地将Rows实例中的列读入[]string-,这是“正确”的方式吗?谢谢!
查看完整描述

3 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

以下代码完全符合您的要求,您可以从https://gist.github.com/hygull/645c3dc39c69b6b69c06f5ea9deee41f获取此代码。还提供了表格数据。


/**

    {

        "created_on": "26 may 2017",

        "todos": [

            "go get github.com/go-sql-driver/mysql"     

        ],

        "aim": "Reading fname column into []string(slice of strings)"

    }

*/



/* 

mysql> select * from users;

+----+-----------+----------+----------+-------------------------------+--------------+

| id | fname     | lname    | uname    | email                         | contact      |

+----+-----------+----------+----------+-------------------------------+--------------+

|  1 | Rishikesh | Agrawani | hygull   | rishikesh0014051992@gmail.com | 917353787704 |

|  2 | Sandeep   | E        | sandeep  | sandeepeswar8@gmail.com       | 919739040038 |

|  3 | Darshan   | Sidar    | darshan  | sidardarshan@gmail.com        | 917996917565 |

|  4 | Surendra  | Prajapat | surendra | surendrakgadwal@gmail.com     | 918385894407 |

|  5 | Mukesh    | Jakhar   | mukesh   | mjakhar.kjahhar@gmail.com     | 919772254140 |

+----+-----------+----------+----------+-------------------------------+--------------+

5 rows in set (0.00 sec)


mysql> 

*/


package main

import "fmt"

import "log"

import (

    _"github.com/go-sql-driver/mysql"   

    "database/sql"

)


func main() {

    // db, err := sql.Open("mysql", "<username>:<password>@tcp(127.0.0.1:<port>)/<dbname>?charset=utf8" )

    db, err := sql.Open("mysql", "hygull:admin@67@tcp(127.0.0.1:3306)/practice_db?charset=utf8")


    if err != nil {

        log.Fatal(err)

    }


    rows, err := db.Query("select fname from users")


    if err != nil {

        log.Fatal(err)

    }


    firstnames := []string{}

    for rows.Next() {

        var fname string

        rows.Scan(&fname)

        firstnames = append(firstnames, fname)

    }


    fmt.Println(firstnames)

    db.Close()

}


/* 

[Rishikesh Sandeep Darshan Surendra Mukesh]

*/


查看完整回答
反对 回复 2021-05-31
  • 3 回答
  • 0 关注
  • 228 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信