Maison > développement back-end > Golang > Comment extraire les valeurs de colonne d'une instance de lignes Go SQL dans une chaîne [] ?

Comment extraire les valeurs de colonne d'une instance de lignes Go SQL dans une chaîne [] ?

Linda Hamilton
Libérer: 2024-11-12 10:22:01
original
685 Les gens l'ont consulté

How to Extract Column Values from a Go SQL Rows Instance into a []string?

Extraction des valeurs de colonne dans []string à l'aide de l'instance Go SQL Rows

Défi :

De nombreuses tâches de programmation nécessitent l'extraction de lignes données des tables de base de données dans un format structuré. Dans Go, le package base de données/sql fournit des instances Rows pour parcourir les lignes de la table. Cependant, la méthode Scan de Rows s'attend à ce que les pointeurs ciblent des variables de types connus, ce qui peut être difficile lorsque le nombre et les types de colonnes sont inconnus à l'avance.

Solution :

Pour lire les colonnes d'une instance Rows dans une []string, vous pouvez utiliser l'approche suivante :

  1. Obtenir une colonne Noms : Appelez Rows.Columns() pour obtenir une tranche de noms de colonnes.
  2. Créer une tranche d'interface : Créez une tranche []interface{} appelée readCols avec la même longueur que les colonnes tranchent. Cette tranche contiendra les adresses des variables de chaîne.
  3. Créer une tranche de chaîne : Créez une tranche de chaîne [] vide appelée writeCols avec la même longueur que la tranche de colonnes. Cette tranche stockera les valeurs de chaîne.
  4. Remplir les adresses : Parcourez les indices de writeCols et attribuez chaque index dans readCols à l'adresse de l'élément correspondant dans writeCols.
  5. Scan Rows : Parcourez l'instance Rows à l'aide de Next() et Scan(). Passez readCols comme argument à Scan(), qui remplira les adresses de chaîne dans writeCols.
  6. Ajouter au résultat : Ajoutez les valeurs dans writeCols à la structure de données souhaitée, telle qu'un CSV écrivain.

Exemple :

package main

import (
    "fmt"
    "io"

    "database/sql"
)

func dumpTable(rows *sql.Rows, out io.Writer) error {
    colNames, err := rows.Columns()
    if err != nil {
        return err
    }

    writer := csv.NewWriter(out)
    writer.Comma = '\t'

    readCols := make([]interface{}, len(colNames))
    writeCols := make([]string, len(colNames))
    for i, _ := range writeCols {
        readCols[i] = &writeCols[i]
    }

    for rows.Next() {
        err := rows.Scan(readCols...)
        if err != nil {
            return err
        }
        writer.Write(writeCols)
    }

    if err = rows.Err(); err != nil {
        return err
    }

    writer.Flush()
    return nil
}
Copier après la connexion

Ce code vous permet de lire les colonnes d'une instance Rows et de les convertir en une []chaîne pour un traitement ultérieur .

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal