Home > Article > Backend Development > How to export database records from Golang?
Use the database/sql package in Go to export database records. The method is as follows: install the database/sql package; connect to the database; write SQL query statements; execute the query and store the results; iterate the result set and obtain the record values. The exported records can be further converted to CSV format and output.
In Golang, we can use the database/sql
package to export records from the database. The following are the steps:
Use the following command to install the database/sql
package:
go get -u github.com/go-sql-driver/mysql
Establish a connection to the database:
import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" // 注册 MySQL 驱动 ) func main() { db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/database") if err != nil { // 处理错误 } defer db.Close() }
Write a SQL query to export records:
SELECT * FROM table_name;
Use the Query
function to execute the query and store the results in *sql.Rows
:
rows, err := db.Query("SELECT * FROM table_name") if err != nil { // 处理错误 }
UseNext
The function iterates through the result set and gets each record.
for rows.Next() { // 获取每一行的列值 var id int var name string var age int err := rows.Scan(&id, &name, &age) if err != nil { // 处理错误 } // 使用这些值进行进一步的操作(例如导出到 CSV 文件) }
The following is the code to export the results to a CSV file:
import ( "csv" "os" ) // 将记录导出到 CSV 文件 func exportToCSV(records [][]string) error { f, err := os.Create("export.csv") if err != nil { return err } defer f.Close() w := csv.NewWriter(f) if err := w.WriteAll(records); err != nil { return err } return nil } // 将结果集转换成 CSV 记录 func toCSVRecords(rows *sql.Rows) ([][]string, error) { var records [][]string for rows.Next() { var id int var name string var age int if err := rows.Scan(&id, &name, &age); err != nil { return nil, err } records = append(records, []string{strconv.Itoa(id), name, strconv.Itoa(age)}) } return records, nil }
Usage example:
// 从数据库导出记录并导出到 CSV 文件 func main() { db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/database") if err != nil { // 处理错误 } defer db.Close() rows, err := db.Query("SELECT * FROM table_name") if err != nil { // 处理错误 } records, err := toCSVRecords(rows) if err != nil { // 处理错误 } if err := exportToCSV(records); err != nil { // 处理错误 } }
The above is the detailed content of How to export database records from Golang?. For more information, please follow other related articles on the PHP Chinese website!