Comment utiliser le langage Go pour importer des données dans une base de données MySQL
MySQL est actuellement une base de données relationnelle très populaire. De plus en plus de développeurs choisissent d'utiliser le langage Go pour interagir avec MySQL pour les données. MySQL. Importation de données de base de données.
Préparer les sources de données
En langage Go, les fichiers au format CSV, JSON, XML et autres formats peuvent être utilisés comme sources de données pour l'importation. Ce qui suit utilise un fichier CSV comme exemple :
id,name,age,gender 1,张三,18,男 2,李四,20,男 3,王五,22,女
Comme vous pouvez le voir dans l'exemple ci-dessus, chaque ligne de données est séparée par des virgules. La première ligne est le nom du champ et les lignes suivantes sont des enregistrements de données spécifiques.
go-sql-driver/mysql
et la fonction Open()
pour vous connecter à la base de données MySQL. go-sql-driver/mysql
库,使用Open()
函数连接MySQL数据库。示例代码:
import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) db, err := sql.Open("mysql", "user:password@tcp(your-mysql-ip:port)/your-database-name") if err != nil { panic(err.Error()) } defer db.Close() // 注意关闭数据库连接
示例代码:
sqlStr := "INSERT INTO your-table-name(id, name, age, gender) VALUES (%d, '%s', %d, '%s')"
csv
包,可以轻松读取CSV文件中的数据。使用NewReader()
函数创建一个CSV文件对象,使用Read()
函数读取每一行数据。示例代码:
import ( "bufio" "encoding/csv" "os" ) csvFile, err := os.Open("your-csv-file.csv") if err != nil { panic(err) } defer csvFile.Close() reader := csv.NewReader(bufio.NewReader(csvFile)) for { line, err := reader.Read() if err == io.EOF { break } else if err != nil { panic(err) } // TODO: 将读取到的数据进行插入操作 }
Exec()
函数执行SQL语句,完成数据的插入操作。示例代码:
query := fmt.Sprintf(sqlStr, id, name, age, gender) _, err = db.Exec(query) if err != nil { panic(err) }
完整代码
下面是通过以上步骤编写的完整代码:
import ( "bufio" "database/sql" "encoding/csv" "fmt" "io" "os" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "user:password@tcp(your-mysql-ip:port)/your-database-name") if err != nil { panic(err.Error()) } defer db.Close() sqlStr := "INSERT INTO your-table-name(id, name, age, gender) VALUES (%d, '%s', %d, '%s')" csvFile, err := os.Open("your-csv-file.csv") if err != nil { panic(err) } defer csvFile.Close() reader := csv.NewReader(bufio.NewReader(csvFile)) for { line, err := reader.Read() if err == io.EOF { break } else if err != nil { panic(err) } id := line[0] name := line[1] age := line[2] gender := line[3] query := fmt.Sprintf(sqlStr, id, name, age, gender) _, err = db.Exec(query) if err != nil { panic(err) } } }
使用以上代码即可实现从CSV文件中导入数据到MySQL数据库中。需要注意的是,在使用Exec()
csv
intégré dans le langage Go pour lire facilement les données des fichiers CSV. Utilisez la fonction NewReader()
pour créer un objet fichier CSV et utilisez la fonction Read()
pour lire chaque ligne de données. 🎜Exec()
pour exécuter des instructions SQL et terminer l'opération d'insertion de données. 🎜Exec()
pour exécuter une instruction SQL, les données insérées doivent être converties en type de données et une gestion des erreurs effectuée pour éviter que des erreurs de type de données ne provoquent un échec d'insertion des données. Dans le même temps, il faut veiller à prévenir les attaques par injection SQL, et l'échappement est nécessaire lors de l'utilisation d'instructions SQL générées dynamiquement. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!