TIMESTAMP 列を追加して、スキーマを更新します。
このコードサンプルが含まれるドキュメント ページ
コンテキストで使用されているコードサンプルを見るには、次のドキュメントをご覧ください。
コードサンプル
C#
using Google.Cloud.Spanner.Data;
using System;
using System.Threading.Tasks;
public class AddNumericColumnAsyncSample
{
public async Task AddNumericColumnAsync(string projectId, string instanceId, string databaseId)
{
string connectionString = $"Data Source=projects/{projectId}/instances/{instanceId}/databases/{databaseId}";
string alterStatement = "ALTER TABLE Venues ADD COLUMN Revenue NUMERIC";
using var connection = new SpannerConnection(connectionString);
using var updateCmd = connection.CreateDdlCommand(alterStatement);
await updateCmd.ExecuteNonQueryAsync();
Console.WriteLine("Added the Revenue column.");
}
}
C++
void AddNumericColumn(google::cloud::spanner::DatabaseAdminClient client,
std::string const& project_id,
std::string const& instance_id,
std::string const& database_id) {
using ::google::cloud::future;
using ::google::cloud::StatusOr;
google::cloud::spanner::Database database(project_id, instance_id,
database_id);
future<
StatusOr<google::spanner::admin::database::v1::UpdateDatabaseDdlMetadata>>
f = client.UpdateDatabase(database, {R"""(
ALTER TABLE Venues ADD COLUMN Revenue NUMERIC)"""});
StatusOr<google::spanner::admin::database::v1::UpdateDatabaseDdlMetadata>
metadata = f.get();
if (!metadata) throw std::runtime_error(metadata.status().message());
std::cout << "`Venues` table altered, new DDL:\n"
<< metadata->DebugString() << "\n";
}
Go
import (
"context"
"fmt"
"io"
database "cloud.google.com/go/spanner/admin/database/apiv1"
adminpb "google.golang.org/genproto/googleapis/spanner/admin/database/v1"
)
func addNumericColumn(w io.Writer, db string) error {
ctx := context.Background()
adminClient, err := database.NewDatabaseAdminClient(ctx)
if err != nil {
return err
}
defer adminClient.Close()
op, err := adminClient.UpdateDatabaseDdl(ctx, &adminpb.UpdateDatabaseDdlRequest{
Database: db,
Statements: []string{
"ALTER TABLE Venues ADD COLUMN Revenue NUMERIC",
},
})
if err != nil {
return err
}
if err := op.Wait(ctx); err != nil {
return err
}
fmt.Fprintf(w, "Added Revenue column\n")
return nil
}
Java
import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.spanner.DatabaseAdminClient;
import com.google.cloud.spanner.Spanner;
import com.google.cloud.spanner.SpannerOptions;
import com.google.common.collect.ImmutableList;
import com.google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata;
import java.util.concurrent.ExecutionException;
class AddNumericColumnSample {
static void addNumericColumn() throws InterruptedException, ExecutionException {
// TODO(developer): Replace these variables before running the sample.
String projectId = "my-project";
String instanceId = "my-instance";
String databaseId = "my-database";
try (Spanner spanner =
SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) {
DatabaseAdminClient adminClient = spanner.getDatabaseAdminClient();
addNumericColumn(adminClient, instanceId, databaseId);
}
}
static void addNumericColumn(
DatabaseAdminClient adminClient, String instanceId, String databaseId)
throws InterruptedException, ExecutionException {
OperationFuture<Void, UpdateDatabaseDdlMetadata> operation =
adminClient.updateDatabaseDdl(
instanceId,
databaseId,
ImmutableList.of("ALTER TABLE Venues ADD COLUMN Revenue NUMERIC"),
null);
// Wait for the operation to finish.
// This will throw an ExecutionException if the operation fails.
operation.get();
System.out.printf("Successfully added column `Revenue`%n");
}
}
Node.js
// Imports the Google Cloud client library.
const {Spanner} = require('@google-cloud/spanner');
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// const projectId = 'my-project-id';
// const instanceId = 'my-instance';
// const databaseId = 'my-database';
// Creates a client
const spanner = new Spanner({
projectId: projectId,
});
// Gets a reference to a Cloud Spanner instance.
const instance = spanner.instance(instanceId);
const database = instance.database(databaseId);
const request = ['ALTER TABLE Venues ADD COLUMN Revenue NUMERIC'];
// Alter existing table to add a column.
const [operation] = await database.updateSchema(request);
console.log(`Waiting for operation on ${databaseId} to complete...`);
await operation.promise();
console.log(
`Added Revenue column to Venues table in database ${databaseId}.`
);
PHP
use Google\Cloud\Spanner\SpannerClient;
/**
* Adds a NUMERIC column to a table.
* Example:
* ```
* add_numeric_column($instanceId, $databaseId);
* ```
*
* @param string $instanceId The Spanner instance ID.
* @param string $databaseId The Spanner database ID.
*/
function add_numeric_column($instanceId, $databaseId)
{
$spanner = new SpannerClient();
$instance = $spanner->instance($instanceId);
$database = $instance->database($databaseId);
$operation = $database->updateDdl(
"ALTER TABLE Venues ADD COLUMN Revenue NUMERIC"
);
print('Waiting for operation to complete...' . PHP_EOL);
$operation->pollUntilComplete();
printf('Added Revenue as a NUMERIC column in Venues table' . PHP_EOL);
}
Python
def add_numeric_column(instance_id, database_id):
""" Adds a new NUMERIC column to the Venues table in the example database.
"""
spanner_client = spanner.Client()
instance = spanner_client.instance(instance_id)
database = instance.database(database_id)
operation = database.update_ddl(["ALTER TABLE Venues ADD COLUMN Revenue NUMERIC"])
print("Waiting for operation to complete...")
operation.result(120)
print(
'Altered table "Venues" on database {} on instance {}.'.format(
database_id, instance_id
)
)
Ruby
# project_id = "Your Google Cloud project ID"
# instance_id = "Your Spanner instance ID"
# database_id = "Your Spanner database ID"
require "google/cloud/spanner"
spanner = Google::Cloud::Spanner.new project: project_id
instance = spanner.instance instance_id
database = instance.database database_id
job = database.update statements: [
"ALTER TABLE Venues ADD COLUMN Revenue NUMERIC"
]
puts "Waiting for database update to complete"
job.wait_until_done!
puts "Added the Revenue as a numeric column in Venues table"