Heim > Backend-Entwicklung > Golang > Wie extrahiere ich Spaltenwerte aus einer Go SQL Rows-Instanz in einen []String?

Wie extrahiere ich Spaltenwerte aus einer Go SQL Rows-Instanz in einen []String?

Linda Hamilton
Freigeben: 2024-11-12 10:22:01
Original
604 Leute haben es durchsucht

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

Spaltenwerte mithilfe der Go SQL Rows-Instanz in []string extrahieren

Herausforderung:

Viele Programmieraufgaben erfordern das Extrahieren von Zeilen Daten aus Datenbanktabellen in ein strukturiertes Format. In Go stellt das Datenbank-/SQL-Paket Zeileninstanzen zum Durchlaufen von Tabellenzeilen bereit. Allerdings erwartet die Scan-Methode von Rows Zeiger auf Zielvariablen mit bekannten Typen, was eine Herausforderung sein kann, wenn die Anzahl und Typen der Spalten im Voraus unbekannt sind.

Lösung:

Um Spalten aus einer Rows-Instanz in einen []String einzulesen, können Sie den folgenden Ansatz verwenden:

  1. Spalte abrufen Namen: Rufen Sie Rows.Columns() auf, um ein Segment von Spaltennamen zu erhalten.
  2. Erstellen Sie ein Interface-Slice: Erstellen Sie ein []interface{}-Slice namens readCols mit der gleichen Länge wie die Spalten schneiden. Dieses Slice enthält die Adressen von String-Variablen.
  3. String-Slice erstellen: Erstellen Sie ein leeres []String-Slice namens writeCols mit der gleichen Länge wie das Spalten-Slice. In diesem Slice werden die Zeichenfolgenwerte gespeichert.
  4. Adressen füllen: Iterieren Sie über die Indizes von writeCols und weisen Sie jeden Index in readCols der Adresse des entsprechenden Elements in writeCols zu.
  5. Zeilen scannen: Mit Next() und Scan() über die Rows-Instanz iterieren. Übergeben Sie readCols als Argument an Scan(), wodurch die Zeichenfolgenadressen in writeCols gefüllt werden.
  6. An Ergebnis anhängen: Hängen Sie die Werte in writeCols an Ihre gewünschte Datenstruktur an, z. B. eine CSV Writer.

Beispiel:

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
}
Nach dem Login kopieren

Mit diesem Code können Sie Spalten aus einer Rows-Instanz lesen und sie zur weiteren Verarbeitung in einen []String konvertieren .

Das obige ist der detaillierte Inhalt vonWie extrahiere ich Spaltenwerte aus einer Go SQL Rows-Instanz in einen []String?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage