Maison base de données tutoriel mysql Comment utiliser le langage Go pour importer et exporter des données depuis la base de données MySQL

Comment utiliser le langage Go pour importer et exporter des données depuis la base de données MySQL

Jun 17, 2023 pm 04:04 PM
go语言 mysql数据库 数据导入导出

Avec l'avènement d'Internet et de l'ère du big data, le traitement des données est devenu une compétence nécessaire. En tant que système de gestion de bases de données relationnelles le plus populaire au monde, MySQL a été largement utilisé dans le domaine du traitement des données. MySQL présente les avantages de hautes performances, de facilité d'utilisation et de flexibilité, mais il peut y avoir des données en double ou invalides pendant le processus d'importation et d'exportation de données. Par conséquent, cet article explique comment utiliser le langage Go pour filtrer l'importation et l'exportation de données. la base de données MySQL.

1. Configuration de l'environnement

  1. Installer la base de données MySQL

Avant de commencer, vous devez d'abord installer une base de données MySQL . Les étapes d'installation de MySQL ne seront pas répétées ici. Vous pouvez l'installer via le site officiel ou l'installer dans votre propre source système. Une fois l'installation terminée, démarrez le service MySQL et créez une base de données.

  1. Installer les pilotes Go et MySQL

Vous devez installer les pilotes Go et MySQL avant d'écrire des programmes en langage Go. Le langage Go est relativement facile à installer. . Vous pouvez l'installer via le site officiel pour l'installation. Le pilote MySQL peut être installé via la commande go get.

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

2. Importer des données

Ce qui suit utilisera un exemple de programme pour présenter comment utiliser le langage Go pour importer des données de base de données MySQL et effectuer un filtrage des données afin de garantir qu'il n'y a pas de données en double dans la base de données.

  1. Écrire un programme

Ce qui suit est un programme simple en langage Go pour importer des données dans une base de données MySQL.

package main

import (
    "database/sql"
    "fmt"

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

func main() {
    // 打开MySQL连接
    db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/database")
    if err != nil {
        panic(err)
    }
    defer db.Close()

    // 插入数据
    stmt, err := db.Prepare("INSERT INTO users(name, age) VALUES(?, ?)")
    if err != nil {
        panic(err)
    }
    defer stmt.Close()

    _, err = stmt.Exec("Tom", 20)
    if err != nil {
        panic(err)
    }
    fmt.Println("Insert data success!")
}
Copier après la connexion

Dans le code ci-dessus, nous utilisons d'abord la fonction sql.Open() pour ouvrir une connexion MySQL. Parmi eux, « nom d'utilisateur » et « mot de passe » sont respectivement le nom d'utilisateur et le mot de passe MySQL, « 127.0.0.1:3306 » est l'adresse et le numéro de port de la base de données MySQL, et « base de données » est le nom de la base de données à exploiter. Ensuite, nous utilisons la fonction db.Prepare() pour préparer une instruction SQL permettant d'insérer des données dans la base de données. Utilisez ensuite la fonction stmt.Exec() pour exécuter l'instruction et insérer les données dans la base de données.

  1. Filtrage des données

Pour les données importées dans la base de données, nous devons nous assurer qu'il n'y a pas de données en double dans la base de données. Vous trouverez ci-dessous un exemple de programme qui ajoute des données et effectue un filtrage des données en double.

package main

import (
    "database/sql"
    "fmt"

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

func main() {
    // 打开MySQL连接
    db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/database")
    if err != nil {
        panic(err)
    }
    defer db.Close()

    // 插入数据并进行重复数据过滤
    err = insert(db, "Tom", 20)
    if err != nil {
        panic(err)
    }
    fmt.Println("Insert data success!")
}

// 将数据插入到数据库中,并进行重复数据过滤
func insert(db *sql.DB, name string, age int) error {
    // 判断数据是否已经存在
    rows, err := db.Query("SELECT COUNT(*) FROM users WHERE name = ? AND age = ?", name, age)
    if err != nil {
        return err
    }
    rows.Next()
    var count int
    err = rows.Scan(&count)
    if err != nil {
        return err
    }
    if count > 0 {
        fmt.Printf("Data[%s, %d] already exists
", name, age)
        return nil
    }

    // 插入数据
    stmt, err := db.Prepare("INSERT INTO users(name, age) VALUES(?, ?)")
    if err != nil {
        return err
    }
    defer stmt.Close()

    _, err = stmt.Exec(name, age)
    if err != nil {
        return err
    }
    return nil
}
Copier après la connexion

Dans le code ci-dessus, nous définissons une fonction insert() pour implémenter les fonctions d'importation et de filtrage des données. Dans la fonction insert(), utilisez d'abord l'instruction SELECT pour demander si les données à insérer existent. Si elles existent, l'opération d'insertion ne sera pas effectuée. Sinon, utilisez l'instruction INSERT pour insérer les données dans la base de données.

3. Exporter des données

Exporter des données signifie généralement exporter les données de la base de données vers un fichier dans un format spécifique pour une analyse manuelle ou un autre traitement du système. Le langage Go fournit un package fmt et un package texte/modèle, qui peuvent facilement générer des données au format texte ou au format HTML.

Ce qui suit est un exemple de programme pour exporter et sortir des données d'une base de données MySQL au format HTML.

package main

import (
    "database/sql"
    "fmt"
    "html/template"
    "os"

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

type User struct {
    Name string
    Age  int
}

func main() {
    // 打开MySQL连接
    db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/database")
    if err != nil {
        panic(err)
    }
    defer db.Close()

    // 导出数据并输出为HTML格式
    err = export(db)
    if err != nil {
        panic(err)
    }
}

// 从数据库中导出数据并输出为HTML格式
func export(db *sql.DB) error {
    // 查询数据
    rows, err := db.Query("SELECT * FROM users")
    if err != nil {
        return err
    }
    defer rows.Close()

    var userList []User
    for rows.Next() {
        var user User
        err = rows.Scan(&user.Name, &user.Age)
        if err != nil {
            return err
        }
        userList = append(userList, user)
    }

    // 输出为HTML格式
    tmpl, err := template.New("userlist").Parse(`
        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>User list</title>
        </head>
        <body>
            <h1>User list</h1>
            <table>
                <thead>
                    <tr>
                        <th>Name</th>
                        <th>Age</th>
                    </tr>
                </thead>
                <tbody>
                    {{range .}}
                    <tr>
                        <td>{{.Name}}</td>
                        <td>{{.Age}}</td>
                    </tr>
                    {{end}}
                </tbody>
            </table>
        </body>
        </html>
    `)
    if err != nil {
        return err
    }

    file, err := os.Create("userlist.html")
    if err != nil {
        return err
    }
    defer file.Close()

    return tmpl.Execute(file, userList)
}
Copier après la connexion

Dans le code ci-dessus, nous définissons une fonction export() pour implémenter les fonctions d'exportation de données et de sortie formatée. Dans la fonction export(), utilisez d’abord l’instruction SELECT pour interroger les données et stocker les résultats de la requête dans une tranche de type User. Utilisez ensuite le package de modèles pour générer les données au format HTML et les écrire dans un fichier.

Conclusion

Cet article présente la méthode d'utilisation du langage Go pour effectuer le filtrage de l'importation et de l'exportation de données pour la base de données MySQL, et explique comment utiliser le langage Go pour écrire l'importation de données pour Base de données MySQL via des exemples de programmes. Le programme de filtrage a été exporté, analysé et expliqué. Il convient de souligner que l'exemple de programme présenté dans cet article n'est qu'une méthode de base et que les lecteurs peuvent l'ajuster et l'améliorer en fonction de leurs propres besoins pour obtenir de meilleurs résultats.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quel est le problème avec le fil de file d'attente dans GO's Crawler Colly? Quel est le problème avec le fil de file d'attente dans GO's Crawler Colly? Apr 02, 2025 pm 02:09 PM

Problème de threading de file d'attente dans Go Crawler Colly explore le problème de l'utilisation de la bibliothèque Crawler Crawler dans le langage Go, les développeurs rencontrent souvent des problèmes avec les threads et les files d'attente de demande. � ...

Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Apr 02, 2025 pm 02:06 PM

La bibliothèque utilisée pour le fonctionnement du numéro de point flottante dans le langage go présente comment s'assurer que la précision est ...

Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Apr 02, 2025 pm 05:09 PM

Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Lorsque vous utilisez Goland pour le développement du langage GO, de nombreux développeurs rencontreront des balises de structure personnalisées ...

Dans Go, pourquoi les chaînes d'impression avec println et string () ont-elles des effets différents? Dans Go, pourquoi les chaînes d'impression avec println et string () ont-elles des effets différents? Apr 02, 2025 pm 02:03 PM

La différence entre l'impression de chaîne dans le langage go: la différence dans l'effet de l'utilisation de fonctions println et string () est en Go ...

Quelles bibliothèques de GO sont développées par de grandes entreprises ou fournies par des projets open source bien connus? Quelles bibliothèques de GO sont développées par de grandes entreprises ou fournies par des projets open source bien connus? Apr 02, 2025 pm 04:12 PM

Quelles bibliothèques de GO sont développées par de grandes entreprises ou des projets open source bien connus? Lors de la programmation en Go, les développeurs rencontrent souvent des besoins communs, ...

Comment résoudre le problème de conversion de type user_id lors de l'utilisation du flux redis pour implémenter les files d'attente de messages dans le langage Go? Comment résoudre le problème de conversion de type user_id lors de l'utilisation du flux redis pour implémenter les files d'attente de messages dans le langage Go? Apr 02, 2025 pm 04:54 PM

Le problème de l'utilisation de Redessstream pour implémenter les files d'attente de messages dans le langage GO consiste à utiliser le langage GO et redis ...

Quelle est la différence entre la structure de définition des mots clés `var` et« type »dans le langage Go? Quelle est la différence entre la structure de définition des mots clés `var` et« type »dans le langage Go? Apr 02, 2025 pm 12:57 PM

Deux façons de définir les structures dans le langage GO: la différence entre les mots clés VAR et le type. Lorsque vous définissez des structures, GO Language voit souvent deux façons d'écrire différentes: d'abord ...

Pourquoi est-il nécessaire de passer des pointeurs lors de l'utilisation de bibliothèques Go et Viper? Pourquoi est-il nécessaire de passer des pointeurs lors de l'utilisation de bibliothèques Go et Viper? Apr 02, 2025 pm 04:00 PM

GO POINTER SYNTAXE ET ATTENDRE DES PROBLÈMES DANS LA BIBLIOTHÈQUE VIPER Lors de la programmation en langage Go, il est crucial de comprendre la syntaxe et l'utilisation des pointeurs, en particulier dans ...

See all articles