Heim  >  Artikel  >  Backend-Entwicklung  >  BQ fügt den Datensatztyp erfolgreich ein, aber es werden keine Daten eingefügt

BQ fügt den Datensatztyp erfolgreich ein, aber es werden keine Daten eingefügt

PHPz
PHPznach vorne
2024-02-09 15:40:181043Durchsuche

BQ 插入记录类型成功,未插入数据

Der PHP-Editor Banana stellt Ihnen ein häufiges Problem beim Datenbankbetrieb vor: Der Datensatztyp wird erfolgreich in die BQ-Datenbank eingefügt, die tatsächlichen Daten werden jedoch nicht eingefügt. Diese Situation kann zu Dateninkonsistenzen führen. Daher müssen wir die Ursache herausfinden und das Problem lösen. Im Folgenden werden wir die möglichen Ursachen und Lösungen detailliert beschreiben, um den Lesern zu helfen, besser mit diesem Problem umzugehen.

Frageninhalt

Ich versuche, Daten gemäß dem folgenden Beispiel in BigQuery einzufügen Text mit vorgefertigter Tabelle im Vergleich zum gegebenen Beispiel. Mein Code lautet wie folgt

type tagInfo struct {
    proj_name string `bigquery:"proj_name"`
    Tags      Tags   `bigquery:"tags"`
}
type Tags struct {
    key    string `bigquery:"key"`
    values string `bigquery:"values"`
}
func insertData() error {
    prjName := "prjName"
    datasetID := "DSName"
    tableID := "TName"

    ctx := context.Background()
    client, err := bigquery.NewClient(ctx, prjName)
    if err != nil {
        return fmt.Errorf("Bigquery.NewClient: %w", err)
    }
    defer client.Close()

    item := &tagInfo{
        proj_name: "Devil",
        Tags: Tags{
            key:    "engcontact",
            values: "Meryl Streep",
        },
    }
    fmt.Printf("Item is: %s", item)
    items := []*tagInfo{item}

    table := client.Dataset(datasetID).Table(tableID)
    inserter := table.Inserter()
    err = inserter.Put(ctx, items)

    if err != nil {
        if multiErr, ok := err.(bigquery.PutMultiError); ok {
            for _, putErr := range multiErr {
                fmt.Printf("failed to insert row %d with err: %v \n", putErr.RowIndex, putErr.Error())
                fmt.Println(putErr.Errors)
            }
        }
        return err
    }
    return nil
}

Der Code wird erfolgreich ausgeführt, aber ich sehe keine eingefügten Datensätze. Die Tabellenstruktur ist wie folgt

Feldname Typ Mod Key Sortierregel Standardwert Richtlinienbezeichnung

proj_name string nullable

Etikett. Der Datensatz kann leer sein

Schlüssel. String kann leer sein Werte. String kann leer sein

Ich bin mir nicht sicher, was los ist. Wenn jemand eine Anleitung geben kann, vielen Dank.

tia Srikanth

Erwarten Sie, dass der Datensatz erfolgreich in die Tabelle eingefügt wird.

Problemumgehung

Felder sollten exportiert werden. Dieses Problem wurde zu oft gemeldet:

type taginfo struct {
    projname string `bigquery:"proj_name"`
    tags     tags   `bigquery:"tags"`
}
type tags struct {
    key    string `bigquery:"key"`
    values string `bigquery:"values"`
}

Siehe Dokumentation (*inserter).put:

...

Wenn src „valuesaver“ ist, wird seine Speichermethode aufgerufen, um eine Zeile zum Hochladen zu generieren.

Wenn src eine Struktur oder ein Zeiger auf eine Struktur ist, das Schema wird daraus abgeleitet und zum Erstellen des Structsaver verwendet. Die Einfügungs-ID von structsaver ist leer.

...

Dies ist ein Kommentar zu

Das obige ist der detaillierte Inhalt vonBQ fügt den Datensatztyp erfolgreich ein, aber es werden keine Daten eingefügt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen