Query data from a new column
Stay organized with collections
Save and categorize content based on your preferences.
Query data from a new column.
Explore further
For detailed documentation that includes this code sample, see the following:
- Getting started with Spanner and PGAdapter
- Getting started with Spanner in C#
- Getting started with Spanner in C++
- Getting started with Spanner in Go
- Getting started with Spanner in Go database/sql
- Getting started with Spanner in Java
- Getting started with Spanner in JDBC
- Getting started with Spanner in Node.js
- Getting started with Spanner in PHP
- Getting started with Spanner in Python
- Getting started with Spanner in Ruby
Code sample
C++
To learn how to install and use the client library for Spanner, see Spanner client libraries.
To authenticate to Spanner, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
voidQueryNewColumn(google::cloud::spanner::Clientclient){
namespacespanner=::google::cloud::spanner;
spanner::SqlStatementselect(
"SELECT SingerId, AlbumId, MarketingBudget FROM Albums");
usingRowType=
std::tuple<std::int64_t,std::int64_t,absl::optional<std::int64_t>>;
autorows=client.ExecuteQuery(std::move(select));
for(auto&row:spanner::StreamOf<RowType>(rows)){
if(!row)throwstd::move(row).status();
std::cout << "SingerId: " << std::get<0>(*row) << "\t";
std::cout << "AlbumId: " << std::get<1>(*row) << "\t";
automarketing_budget=std::get<2>(*row);
if(marketing_budget){
std::cout << "MarketingBudget: " << *marketing_budget << "\n";
}else{
std::cout << "MarketingBudget: NULL\n";
}
}
std::cout << "Read completed for [spanner_read_data_with_new_column]\n";
}
C#
To learn how to install and use the client library for Spanner, see Spanner client libraries.
To authenticate to Spanner, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
usingGoogle.Cloud.Spanner.Data ;
usingSystem.Collections.Generic;
usingSystem.Threading.Tasks;
publicclassQueryNewColumnAsyncSample
{
publicclassAlbum
{
publicintSingerId{get;set;}
publicintAlbumId{get;set;}
publiclongMarketingBudget{get;set;}
}
publicasyncTask<List<Album>>QueryNewColumnAsync(stringprojectId,stringinstanceId,stringdatabaseId)
{
stringconnectionString=$"Data Source=projects/{projectId}/instances/{instanceId}/databases/{databaseId}";
varalbums=newList<Album>();
usingvarconnection=newSpannerConnection (connectionString);
usingvarcmd=connection.CreateSelectCommand ("SELECT * FROM Albums");
usingvarreader=awaitcmd.ExecuteReaderAsync ();
while(awaitreader.ReadAsync ())
{
albums.Add(newAlbum
{
SingerId=reader.GetFieldValue<int>("SingerId"),
AlbumId=reader.GetFieldValue<int>("AlbumId"),
MarketingBudget=reader.IsDBNull (reader.GetOrdinal ("MarketingBudget"))?0:reader.GetFieldValue<long>("MarketingBudget")
});
}
returnalbums;
}
}
Go
To learn how to install and use the client library for Spanner, see Spanner client libraries.
To authenticate to Spanner, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
import(
"context"
"fmt"
"io"
"strconv"
"cloud.google.com/go/spanner"
"google.golang.org/api/iterator"
)
funcqueryNewColumn(wio.Writer,dbstring)error{
ctx:=context.Background()
client,err:=spanner.NewClient(ctx,db)
iferr!=nil{
returnerr
}
deferclient.Close()
stmt:=spanner.Statement {SQL:`SELECT SingerId, AlbumId, MarketingBudget FROM Albums`}
iter:=client.Single ().Query(ctx,stmt)
deferiter.Stop()
for{
row,err:=iter.Next()
iferr==iterator.Done{
returnnil
}
iferr!=nil{
returnerr
}
varsingerID,albumIDint64
varmarketingBudgetspanner.NullInt64
iferr:=row.ColumnByName ("SingerId",&singerID);err!=nil{
returnerr
}
iferr:=row.ColumnByName ("AlbumId",&albumID);err!=nil{
returnerr
}
iferr:=row.ColumnByName ("MarketingBudget",&marketingBudget);err!=nil{
returnerr
}
budget:="NULL"
ifmarketingBudget.Valid{
budget=strconv.FormatInt(marketingBudget.Int64 ,10)
}
fmt.Fprintf(w,"%d %d %s\n",singerID,albumID,budget)
}
}
Java
To learn how to install and use the client library for Spanner, see Spanner client libraries.
To authenticate to Spanner, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
staticvoidqueryDataWithNewColumn(
finalStringproject,
finalStringinstance,
finalStringdatabase,
finalPropertiesproperties)throwsSQLException{
try(Connectionconnection=
DriverManager.getConnection(
String.format(
"jdbc:cloudspanner:/projects/%s/instances/%s/databases/%s",
project,instance,database),
properties)){
// Rows without an explicit value for MarketingBudget will have a
// MarketingBudget equal to null.
try(ResultSetresultSet=
connection
.createStatement()
.executeQuery(
"SELECT SingerId, AlbumId, MarketingBudget "
+"FROM Albums")){
while(resultSet.next()){
// Use the ResultSet#getObject(String) method to get data
// of any type from the ResultSet.
System.out.printf(
"%s %s %s\n",
resultSet.getObject("SingerId"),
resultSet.getObject("AlbumId"),
resultSet.getObject("MarketingBudget"));
}
}
}
}
Node.js
To learn how to install and use the client library for Spanner, see Spanner client libraries.
To authenticate to Spanner, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
// This sample uses the `MarketingBudget` column. You can add the column
// by running the `add_column` sample or by running this DDL statement against
// your database:
// ALTER TABLE Albums ADD COLUMN MarketingBudget INT64
// 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
constspanner=newSpanner ({
projectId:projectId,
});
// Gets a reference to a Cloud Spanner instance and database
constinstance=spanner.instance(instanceId);
constdatabase=instance.database(databaseId);
constquery={
sql:'SELECT SingerId, AlbumId, MarketingBudget FROM Albums',
};
// Queries rows from the Albums table
try{
const[rows]=awaitdatabase.run(query);
rows.forEach(asyncrow=>{
constjson=row.toJSON();
console.log(
`SingerId: ${json.SingerId}, AlbumId: ${
json.AlbumId
}, MarketingBudget: ${
json.MarketingBudget?json.MarketingBudget:null
}`,
);
});
}catch(err){
console.error('ERROR:',err);
}finally{
// Close the database when finished.
database.close();
}
PHP
To learn how to install and use the client library for Spanner, see Spanner client libraries.
To authenticate to Spanner, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
use Google\Cloud\Spanner\SpannerClient;
/**
* Queries sample data from the database using SQL.
* This sample uses the `MarketingBudget` column. You can add the column
* by running the `add_column` sample or by running this DDL statement against
* your database:
*
* ALTER TABLE Albums ADD COLUMN MarketingBudget INT64
*
* Example:
* ```
* query_data_with_new_column($instanceId, $databaseId);
* ```
*
* @param string $instanceId The Spanner instance ID.
* @param string $databaseId The Spanner database ID.
*/
function query_data_with_new_column(string $instanceId, string $databaseId): void
{
$spanner = new SpannerClient();
$instance = $spanner->instance($instanceId);
$database = $instance->database($databaseId);
$results = $database->execute(
'SELECT SingerId, AlbumId, MarketingBudget FROM Albums'
);
foreach ($results as $row) {
printf('SingerId: %s, AlbumId: %s, MarketingBudget: %d' . PHP_EOL,
$row['SingerId'], $row['AlbumId'], $row['MarketingBudget']);
}
}
Python
To learn how to install and use the client library for Spanner, see Spanner client libraries.
To authenticate to Spanner, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
defquery_data_with_new_column(instance_id, database_id):
"""Queries sample data from the database using SQL.
This sample uses the `MarketingBudget` column. You can add the column
by running the `add_column` sample or by running this DDL statement against
your database:
ALTER TABLE Albums ADD COLUMN MarketingBudget INT64
"""
spanner_client = spanner.Client()
instance = spanner_client.instance(instance_id)
database = instance.database(database_id)
with database.snapshot() as snapshot:
results = snapshot.execute_sql(
"SELECT SingerId, AlbumId, MarketingBudget FROM Albums"
)
for row in results:
print("SingerId: {}, AlbumId: {}, MarketingBudget: {}".format(*row))
Ruby
To learn how to install and use the client library for Spanner, see Spanner client libraries.
To authenticate to Spanner, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
# 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 .newproject:project_id
client=spanner.client instance_id,database_id
client.execute("SELECT SingerId, AlbumId, MarketingBudget FROM Albums").rows.each do|row|
puts"#{row[:SingerId]}#{row[:AlbumId]}#{row[:MarketingBudget]}"
end
What's next
To search and filter code samples for other Google Cloud products, see the Google Cloud sample browser.