NUMERIC 열을 추가하여 스키마를 업데이트합니다.
더 살펴보기
이 코드 샘플이 포함된 자세한 문서는 다음을 참조하세요.
코드 샘플
C#
Spanner용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Spanner 클라이언트 라이브러리를 참조하세요.
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++
Spanner용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Spanner 클라이언트 라이브러리를 참조하세요.
void AddNumericColumn(google::cloud::spanner_admin::DatabaseAdminClient client,
std::string const& project_id,
std::string const& instance_id,
std::string const& database_id) {
google::cloud::spanner::Database database(project_id, instance_id,
database_id);
auto metadata = client
.UpdateDatabaseDdl(database.FullName(), {R"""(
ALTER TABLE Venues ADD COLUMN Revenue NUMERIC)"""})
.get();
google::cloud::spanner_testing::LogUpdateDatabaseDdl( //! TODO(#4758)
client, database, metadata.status()); //! TODO(#4758)
if (!metadata) throw std::move(metadata).status();
std::cout << "`Venues` table altered, new DDL:\n" << metadata->DebugString();
}
Go
Spanner용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Spanner 클라이언트 라이브러리를 참조하세요.
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(ctx context.Context, w io.Writer, db string) error {
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
Spanner용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Spanner 클라이언트 라이브러리를 참조하세요.
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
Spanner용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Spanner 클라이언트 라이브러리를 참조하세요.
// 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
Spanner용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Spanner 클라이언트 라이브러리를 참조하세요.
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(string $instanceId, string $databaseId): void
{
$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
Spanner용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Spanner 클라이언트 라이브러리를 참조하세요.
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(OPERATION_TIMEOUT_SECONDS)
print(
'Altered table "Venues" on database {} on instance {}.'.format(
database_id, instance_id
)
)
Ruby
Spanner용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Spanner 클라이언트 라이브러리를 참조하세요.
# project_id = "Your Google Cloud project ID"
# instance_id = "Your Spanner instance ID"
# database_id = "Your Spanner database ID"
require "google/cloud/spanner"
require "google/cloud/spanner/admin/database"
database_admin_client = Google::Cloud::Spanner::Admin::Database.database_admin
db_path = database_admin_client.database_path project: project_id,
instance: instance_id,
database: database_id
job = database_admin_client.update_database_ddl database: db_path,
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"
다음 단계
다른 Google Cloud 제품의 코드 샘플을 검색하고 필터링하려면 Google Cloud 샘플 브라우저를 참조하세요.