Rumah pangkalan data tutorial mysql Cara menggunakan bahasa Go untuk mengimport dan mengeksport data daripada pangkalan data MySQL

Cara menggunakan bahasa Go untuk mengimport dan mengeksport data daripada pangkalan data MySQL

Jun 17, 2023 pm 04:04 PM
pergi bahasa pangkalan data mysql Import dan eksport data

Dengan kemunculan Internet dan era data besar, pemprosesan data telah menjadi kemahiran penting. Sebagai sistem pengurusan pangkalan data hubungan yang paling popular di dunia, MySQL telah digunakan secara meluas dalam bidang pemprosesan data. MySQL mempunyai kelebihan prestasi tinggi, kemudahan penggunaan dan fleksibiliti, tetapi mungkin terdapat data pendua atau tidak sah semasa proses import dan eksport data Oleh itu, artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk menapis import dan eksport data pangkalan data MySQL.

1. Persediaan persekitaran

  1. Pasang pangkalan data MySQL

Sebelum bermula, anda perlu memasang pangkalan data MySQL terlebih dahulu. Langkah pemasangan MySQL tidak akan diulang di sini Anda boleh memasangnya melalui laman web rasmi atau memasangnya dalam sumber sistem anda sendiri. Selepas pemasangan selesai, mulakan perkhidmatan MySQL dan buat pangkalan data.

  1. Pasang pemacu Go dan MySQL

Anda perlu memasang pemacu Go dan MySQL sebelum menulis program bahasa Go adalah agak mudah untuk dipasang dan boleh dipasang melalui laman web rasmi. Pemacu MySQL boleh dipasang melalui arahan go get.

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

2 Import data

Berikut akan memperkenalkan cara menggunakan bahasa Go untuk mengimport pangkalan data MySQL data dan melakukan penapisan data untuk memastikan tiada data pendua dalam pangkalan data.

  1. Menulis program

Berikut ialah program bahasa Go yang mudah untuk mengimport data ke dalam pangkalan data 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!")
}
Salin selepas log masuk

Dalam kod di atas, kami mula-mula menggunakan fungsi sql.Open() untuk membuka sambungan MySQL. Antaranya, "nama pengguna" dan "kata laluan" masing-masing ialah nama pengguna dan kata laluan MySQL, "127.0.0.1:3306" ialah alamat dan nombor port pangkalan data MySQL, dan "pangkalan data" ialah nama pangkalan data yang akan dikendalikan. Seterusnya, kami menggunakan fungsi db.Prepare() untuk menyediakan pernyataan SQL untuk memasukkan data ke dalam pangkalan data. Kemudian gunakan fungsi stmt.Exec() untuk melaksanakan pernyataan dan memasukkan data ke dalam pangkalan data.

  1. Penapisan data

Untuk data yang diimport ke dalam pangkalan data, kami perlu memastikan bahawa tiada data pendua dalam pangkalan data. Di bawah ialah contoh program yang menambah data dan melakukan penapisan data pendua.

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
}
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan fungsi sisipan() untuk melaksanakan fungsi import dan penapisan data. Dalam fungsi insert(), mula-mula gunakan penyataan SELECT untuk menanyakan sama ada data yang akan disisipkan wujud Jika ia wujud, operasi sisipan tidak akan dilakukan.

3. Eksport data

Mengeksport data biasanya bermaksud mengeluarkan data dalam pangkalan data kepada fail dalam format khusus untuk analisis manual atau pemprosesan sistem lain. Bahasa Go menyediakan pakej fmt dan pakej teks/templat, yang boleh mengeluarkan data dengan mudah ke dalam format teks atau format HTML.

Berikut ialah contoh program untuk mengeksport dan mengeluarkan data daripada pangkalan data MySQL ke dalam 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)
}
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan fungsi eksport() untuk melaksanakan fungsi eksport data dan output yang diformatkan. Dalam fungsi eksport(), mula-mula gunakan pernyataan SELECT untuk menanyakan data dan menyimpan hasil pertanyaan dalam sekeping jenis Pengguna. Kemudian gunakan pakej templat untuk mengeluarkan data ke dalam format HTML dan menulisnya ke fail.

Kesimpulan

Artikel ini memperkenalkan kaedah menggunakan bahasa Go untuk melaksanakan penapisan import dan eksport data untuk pangkalan data MySQL Melalui contoh program, ia menerangkan secara terperinci cara menggunakan bahasa Go untuk menulis a program penapis import dan eksport untuk pangkalan data MySQL Dan dianalisis dan dijelaskan. Perlu diingatkan bahawa program contoh dalam artikel ini hanyalah kaedah asas, dan pembaca boleh menyesuaikan dan memperbaikinya mengikut keperluan mereka sendiri untuk mencapai hasil yang lebih baik.

Atas ialah kandungan terperinci Cara menggunakan bahasa Go untuk mengimport dan mengeksport data daripada pangkalan data MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah masalah dengan thread giliran di crawler colly go? Apakah masalah dengan thread giliran di crawler colly go? Apr 02, 2025 pm 02:09 PM

Masalah Threading Giliran di GO Crawler Colly meneroka masalah menggunakan Perpustakaan Colly Crawler dalam bahasa Go, pemaju sering menghadapi masalah dengan benang dan permintaan beratur. � ...

Perpustakaan apa yang digunakan untuk operasi nombor terapung di GO? Perpustakaan apa yang digunakan untuk operasi nombor terapung di GO? Apr 02, 2025 pm 02:06 PM

Perpustakaan yang digunakan untuk operasi nombor terapung dalam bahasa Go memperkenalkan cara memastikan ketepatannya ...

Apa yang perlu saya lakukan jika label struktur tersuai di Goland tidak dipaparkan? Apa yang perlu saya lakukan jika label struktur tersuai di Goland tidak dipaparkan? Apr 02, 2025 pm 05:09 PM

Apa yang perlu saya lakukan jika label struktur tersuai di Goland tidak dipaparkan? Apabila menggunakan Goland untuk Pembangunan Bahasa GO, banyak pemaju akan menghadapi tag struktur tersuai ...

Di Go, mengapa rentetan percetakan dengan fungsi println dan rentetan () mempunyai kesan yang berbeza? Di Go, mengapa rentetan percetakan dengan fungsi println dan rentetan () mempunyai kesan yang berbeza? Apr 02, 2025 pm 02:03 PM

Perbezaan antara percetakan rentetan dalam bahasa Go: perbezaan kesan menggunakan fungsi println dan rentetan () sedang ...

Perpustakaan mana yang dibangunkan oleh syarikat besar atau disediakan oleh projek sumber terbuka yang terkenal? Perpustakaan mana yang dibangunkan oleh syarikat besar atau disediakan oleh projek sumber terbuka yang terkenal? Apr 02, 2025 pm 04:12 PM

Perpustakaan mana yang dibangunkan oleh syarikat besar atau projek sumber terbuka yang terkenal? Semasa pengaturcaraan di GO, pemaju sering menghadapi beberapa keperluan biasa, ...

Bagaimana menyelesaikan masalah penukaran jenis user_id semasa menggunakan aliran redis untuk melaksanakan beratur mesej dalam bahasa Go? Bagaimana menyelesaikan masalah penukaran jenis user_id semasa menggunakan aliran redis untuk melaksanakan beratur mesej dalam bahasa Go? Apr 02, 2025 pm 04:54 PM

Masalah menggunakan redisstream untuk melaksanakan beratur mesej dalam bahasa Go menggunakan bahasa Go dan redis ...

Apakah perbezaan antara struktur definisi kata kunci `var` dan` type` dalam bahasa Go? Apakah perbezaan antara struktur definisi kata kunci `var` dan` type` dalam bahasa Go? Apr 02, 2025 pm 12:57 PM

Dua cara untuk menentukan struktur dalam bahasa Go: perbezaan antara VAR dan jenis kata kunci. Apabila menentukan struktur, pergi bahasa sering melihat dua cara menulis yang berbeza: pertama ...

Kenapa perlu lulus petunjuk apabila menggunakan perpustakaan Go dan Viper? Kenapa perlu lulus petunjuk apabila menggunakan perpustakaan Go dan Viper? Apr 02, 2025 pm 04:00 PM

GO Pointer Syntax dan menangani masalah dalam penggunaan perpustakaan Viper semasa pengaturcaraan dalam bahasa Go, adalah penting untuk memahami sintaks dan penggunaan petunjuk, terutama dalam ...

See all articles