l'éditeur php Banana vous présentera un problème courant de fonctionnement de la base de données, c'est-à-dire que le type d'enregistrement est inséré avec succès dans la base de données BQ mais les données réelles ne sont pas insérées. Cette situation peut entraîner une incohérence des données, nous devons donc en découvrir la cause et résoudre le problème. Dans ce qui suit, nous détaillerons les causes possibles et les solutions pour aider les lecteurs à mieux gérer ce problème.
J'essaie d'insérer des données dans bigquery selon l'exemple suivant Texte avec tableau pré-créé par rapport à l'exemple donné. Mon code est le suivant
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 }
Le code s'exécute avec succès mais je ne vois aucun enregistrement inséré. La structure du tableau est la suivante
Étiquette de politique de valeur par défaut de règle de tri de clé de mod de type de nom de champ
chaîne de nom_proj nullable
Étiquette. Le dossier peut être vide
clé. La chaîne peut être vide valeurs. La chaîne peut être vide
Je ne sais pas ce qui ne va pas, si quelqu'un peut me donner des conseils, merci beaucoup.
tia Srikanth
Attendez-vous à ce que l'enregistrement soit inséré avec succès dans le tableau.
Les champs doivent être exportés. Ce problème a été signalé trop de fois :
type taginfo struct { projname string `bigquery:"proj_name"` tags tags `bigquery:"tags"` } type tags struct { key string `bigquery:"key"` values string `bigquery:"values"` }
Voir la documentation (*inserter).put< /a> :
...
Si src est Valuesaver, sa méthode save est appelée pour générer une ligne à télécharger.
Si src est une structure ou un pointeur vers une structure, le schéma en est déduit et utilisé pour créer le structsaver. L'insertid de structsaver sera vide.
...
Ceci est un commentaire sur // inferFields extracts all exported field types from struct type.
func inferFields(rt reflect.Type) (Schema, error) {
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!