Crea una tabella utilizzando un modello

Crea una tabella utilizzando le proprietà di una tabella (schema, partizionamento, clustering) per creare una nuova tabella vuota con la stessa configurazione.

Esempio di codice

Go

Prima di provare questo esempio, segui le istruzioni di configurazione di Go disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Go.

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

import (
	"context"
	"fmt"

	"cloud.google.com/go/bigquery"
)

// createTableFromTemplateTable demonstrates how to use the properties of one
// table (schema, partitioning, clustering) to create a new empty table with
// the same configuration.
func createTableFromTemplateTable(srcProjectID, srcDatasetID, srcTableID, dstProjectID, dstDatasetID, dstTableID string) error {
	// srcProjectID := "bigquery-public-data"
	// srcDatasetID := "samples"
	// srcTableID := "shakespeare"
	// dstProjectID := "my-project-id"
	// dstDatasetID := "mydataset"
	// dstTableID := "mytable"
	ctx := context.Background()

	// We'll construct the client based on the destination project.
	client, err := bigquery.NewClient(ctx, dstProjectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %w", err)
	}
	defer client.Close()

	srcTableRef := client.DatasetInProject(srcProjectID, srcDatasetID).Table(srcTableID)

	srcMeta, err := srcTableRef.Metadata(ctx)
	if err != nil {
		return fmt.Errorf("failed to get source table metadata: %w", err)
	}

	dstTableRef := client.Dataset(dstDatasetID).Table(dstTableID)

	// We'll use some (but not all) of the metadata from the source table
	// to define the destination table.  Other properties to consider include
	// attributes like expiration policy and managed encryption settings.
	dstMeta := &bigquery.TableMetadata{
		Description: fmt.Sprintf("table structure copied from %s.%s.%s",
			srcTableRef.ProjectID, srcTableRef.DatasetID, srcTableRef.TableID),
		Schema:     srcMeta.Schema,
		Clustering: srcMeta.Clustering,
		// A table will only have one partitioning configuration, the others will be empty/nil.
		TimePartitioning:  srcMeta.TimePartitioning,
		RangePartitioning: srcMeta.RangePartitioning,
		// Retain the same enforcement of partition filtering as well.
		RequirePartitionFilter: srcMeta.RequirePartitionFilter,
	}

	if err := dstTableRef.Create(ctx, dstMeta); err != nil {
		return err
	}

	return nil
}

Passaggi successivi

Per cercare e filtrare esempi di codice per altri prodotti Google Cloud, consulta il browser di esempio Google Cloud.