golang excel导入mysql

发布时间:2024-12-23 03:48:05

Golang Excel导入MySQL实现

Golang是一个强大的编程语言,其简洁的语法和高效的并发性使得它成为了许多开发者心目中的首选。在数据处理方面,Excel表格是一种常见的数据格式,而MySQL是广泛应用的关系型数据库。本文将介绍如何使用Golang实现Excel导入MySQL的功能。

步骤一:安装依赖包

在开始之前,我们需要先安装一些Golang的依赖包。使用以下命令来安装:

go get github.com/tealeg/xlsx
go get github.com/go-sql-driver/mysql

步骤二:连接数据库

在代码中,我们需要先创建数据库的连接。可以使用以下代码来实现:

import (
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
)

func connectToDatabase() (*sql.DB, error) {
    db, err := sql.Open("mysql", "用户名:密码@tcp(localhost:3306)/数据库名称")
    if err != nil {
        return nil, err
    }
    return db, nil
}

步骤三:解析Excel文件

我们可以使用第三方库"tealeg/xlsx"来解析Excel文件。以下是一个简单的函数,用于解析Excel文件并返回相关数据:

import (
    "github.com/tealeg/xlsx"
)

func parseExcelFile(filename string) ([]string, error) {
    var data []string
    file, err := xlsx.OpenFile(filename)
    if err != nil {
        return nil, err
    }
    for _, sheet := range file.Sheets {
        for _, row := range sheet.Rows {
            for _, cell := range row.Cells {
                value, _ := cell.String()
                data = append(data, value)
            }
        }
    }
    return data, nil
}

步骤四:插入数据到MySQL

经过前面的步骤,我们已经可以获取到Excel文件中的数据。现在,我们需要将这些数据插入到MySQL数据库中。以下是一个简单的函数,用于插入数据:

func insertData(db *sql.DB, data []string) error {
    stmt, err := db.Prepare("INSERT INTO 表名 VALUES (?, ?, ?)")
    if err != nil {
        return err
    }
    defer stmt.Close()
    for i := 0; i < len(data); i += 3 {
        _, err = stmt.Exec(data[i], data[i+1], data[i+2])
        if err != nil {
            return err
        }
    }
    return nil
}

步骤五:完整代码示例

下面是一个完整的示例代码:

package main

import (
    "database/sql"
    "fmt"
    "github.com/tealeg/xlsx"
    _ "github.com/go-sql-driver/mysql"
)

func connectToDatabase() (*sql.DB, error) {
    db, err := sql.Open("mysql", "用户名:密码@tcp(localhost:3306)/数据库名称")
    if err != nil {
        return nil, err
    }
    return db, nil
}

func parseExcelFile(filename string) ([]string, error) {
    var data []string
    file, err := xlsx.OpenFile(filename)
    if err != nil {
        return nil, err
    }
    for _, sheet := range file.Sheets {
        for _, row := range sheet.Rows {
            for _, cell := range row.Cells {
                value, _ := cell.String()
                data = append(data, value)
            }
        }
    }
    return data, nil
}

func insertData(db *sql.DB, data []string) error {
    stmt, err := db.Prepare("INSERT INTO 表名 VALUES (?, ?, ?)")
    if err != nil {
        return err
    }
    defer stmt.Close()
    for i := 0; i < len(data); i += 3 {
        _, err = stmt.Exec(data[i], data[i+1], data[i+2])
        if err != nil {
            return err
        }
    }
    return nil
}

func main() {
    db, err := connectToDatabase()
    if err != nil {
        fmt.Println("数据库连接失败:", err)
        return
    }
    
    data, err := parseExcelFile("文件路径.xlsx")
    if err != nil {
        fmt.Println("解析Excel文件失败:", err)
        return
    }
    
    err = insertData(db, data)
    if err != nil {
        fmt.Println("数据插入失败:", err)
        return
    }
    
    fmt.Println("数据导入成功")
}

通过以上步骤,我们可以实现通过Golang将Excel文件中的数据导入到MySQL数据库中。这个过程简单、高效,是处理Excel数据的一种可行方法。

相关推荐