Google-BigQuery
view release on metacpan or search on metacpan
t/07_db_methods.t view on Meta::CPAN
BEGIN {
unless (defined $ENV{CLIENT_EMAIL} && defined $ENV{PRIVATE_KEY_FILE} && $ENV{PROJECT_ID}) {
require Test::More;
Test::More::plan(skip_all => 'This test needs $ENV{CLIENT_EMAIL}, $ENV{PRIVATE_KEY_FILE} and $ENV{PROJECT_ID}.');
}
}
use strict;
use Test::More 0.98;
use FindBin '$Bin';
use JSON qw(decode_json encode_json);
use Data::Dumper;
use Google::BigQuery;
my $client_email = $ENV{CLIENT_EMAIL};
my $private_key_file = $ENV{PRIVATE_KEY_FILE};
my $project_id = $ENV{PROJECT_ID};
my $dataset_id = 'sample_dataset_' . time;
my $table_id = 'sample_table_' . time;
my $ret;
my $bigquery = Google::BigQuery::create(
client_email => $client_email,
private_key_file => $private_key_file
);
# set default project
$bigquery->use_project($project_id);
is($bigquery->{project_id}, $project_id, "use_project");
# set default dataset
$bigquery->use_dataset($dataset_id);
is($bigquery->{dataset_id}, $dataset_id, "use_dataset");
# create dataset
$ret = $bigquery->create_dataset();
is($ret, 1, "create_dataset");
# is_exists_dataset
$ret = $bigquery->is_exists_dataset(dataset_id => $dataset_id);
is($ret, 1, "is_exists_dataset (exists)");
# create table
$bigquery->create_table(
table_id => $table_id,
schema => [
{ name => "id", type => "INTEGER", mode => "REQUIRED" },
{ name => "name", type => "STRING", mode => "NULLABLE" }
]
);
is($ret, 1, "create_table");
# is_exists_table
$ret = $bigquery->is_exists_table(table_id => $table_id);
is($ret, 1, "is_exists_table (exists)");
# insert
$ret = $bigquery->insert(
table_id => $table_id,
values => [
{ id => 101, name => 'name101' },
{ id => 102 },
{ id => 103, name => 'name103' }
]
);
is($ret, 1, "insert");
# load
my $load_file;
my @types = qw(csv tsv json);
for (my $i = 0; $i < @types; $i++) {
$load_file = "load_file." . $types[$i];
open my $out, ">", $load_file;
for (my $j = 0; $j < 10; $j++) {
my $id = ($i * 10) + $j;
if ($types[$i] =~ /csv/i) {
print $out join(",", $id, "name${id}"), "\n";
} elsif ($types[$i] =~ /tsv/i) {
print $out join("\t", $id, "name${id}"), "\n";
} else {
print $out encode_json({ id => $id, name => "name${id}" }), "\n";
}
}
( run in 0.744 second using v1.01-cache-2.11-cpan-39bf76dae61 )