bigquery_migration 0.1.0.pre5 → 0.1.0.pre6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/example/copy_table.yml +20 -0
- data/example/example.yml +1 -0
- data/example/insert_select.yml +21 -0
- data/example/migrate_table.yml +22 -0
- data/lib/bigquery_migration/action.rb +21 -0
- data/lib/bigquery_migration/bigquery_wrapper.rb +7 -2
- data/lib/bigquery_migration/version.rb +1 -1
- metadata +5 -2
- data/example/example.yml +0 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7f59228af936baf7e4dab8f4e065f24945f47c26
|
4
|
+
data.tar.gz: 7fa846a9830ec47617e92b76899adba0a8ad1891
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63474dac494bc19b8041255d43cb1f8c20513379bf397c30b5390dba30aa59ff3e3db9193841af9b713a73aecccda305b32c73c88ca41337f6e2df6cdfa185dd
|
7
|
+
data.tar.gz: a0c74a1689507a38b6194393e691b3fcdcbd3a82b9e62b9f0e3bd93713d5d6f28a857b1610ef7bacec9f168aabbc5f2103956dd70568afa8e15e5b44c8025ea1
|
@@ -0,0 +1,20 @@
|
|
1
|
+
bigquery: &bigquery
|
2
|
+
json_keyfile: example/your-project-000.json
|
3
|
+
dataset: your_dataset_name
|
4
|
+
table: your_table_name
|
5
|
+
|
6
|
+
actions:
|
7
|
+
- action: create_dataset
|
8
|
+
<<: *bigquery
|
9
|
+
- action: migrate_table
|
10
|
+
<<: *bigquery
|
11
|
+
columns:
|
12
|
+
- { name: 'timestamp', type: 'TIMESTAMP' }
|
13
|
+
- name: 'record'
|
14
|
+
type: 'RECORD'
|
15
|
+
fields:
|
16
|
+
- { name: 'string', type: 'STRING' }
|
17
|
+
- { name: 'integer', type: 'INTEGER' }
|
18
|
+
- action: copy_table
|
19
|
+
<<: *bigquery
|
20
|
+
destination_table: your_table_name_copy
|
data/example/example.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
migrate_table.yml
|
@@ -0,0 +1,21 @@
|
|
1
|
+
bigquery: &bigquery
|
2
|
+
json_keyfile: example/your-project-000.json
|
3
|
+
dataset: your_dataset_name
|
4
|
+
table: your_table_name
|
5
|
+
|
6
|
+
actions:
|
7
|
+
- action: create_dataset
|
8
|
+
<<: *bigquery
|
9
|
+
- action: migrate_table
|
10
|
+
<<: *bigquery
|
11
|
+
columns:
|
12
|
+
- { name: 'timestamp', type: 'TIMESTAMP' }
|
13
|
+
- name: 'record'
|
14
|
+
type: 'RECORD'
|
15
|
+
fields:
|
16
|
+
- { name: 'string', type: 'STRING' }
|
17
|
+
- { name: 'integer', type: 'INTEGER' }
|
18
|
+
- action: insert_select
|
19
|
+
<<: *bigquery
|
20
|
+
destination_table: your_table_name_insert_select
|
21
|
+
query: select * from [your_dataset_name.your_table_name]
|
@@ -0,0 +1,22 @@
|
|
1
|
+
bigquery: &bigquery
|
2
|
+
json_keyfile: example/your-project-000.json
|
3
|
+
dataset: your_dataset_name
|
4
|
+
table: your_table_name
|
5
|
+
|
6
|
+
actions:
|
7
|
+
- action: create_dataset
|
8
|
+
<<: *bigquery
|
9
|
+
- action: migrate_table
|
10
|
+
<<: *bigquery
|
11
|
+
columns:
|
12
|
+
- { name: 'timestamp', type: 'TIMESTAMP' }
|
13
|
+
- name: 'record'
|
14
|
+
type: 'RECORD'
|
15
|
+
fields:
|
16
|
+
- { name: 'string', type: 'STRING' }
|
17
|
+
- { name: 'integer', type: 'INTEGER' }
|
18
|
+
- action: migrate_table
|
19
|
+
<<: *bigquery
|
20
|
+
schema_file: example/schema.json
|
21
|
+
- action: delete_table
|
22
|
+
<<: *bigquery
|
@@ -39,6 +39,8 @@ class BigqueryMigration
|
|
39
39
|
migrate_table
|
40
40
|
insert
|
41
41
|
preview
|
42
|
+
insert_select
|
43
|
+
copy_table
|
42
44
|
])
|
43
45
|
end
|
44
46
|
|
@@ -81,5 +83,24 @@ class BigqueryMigration
|
|
81
83
|
def preview
|
82
84
|
client.list_table_data(max_results: config[:max_results])
|
83
85
|
end
|
86
|
+
|
87
|
+
def copy_table
|
88
|
+
client.copy_table(
|
89
|
+
destination_table: config[:destination_table],
|
90
|
+
destination_dataset: config[:destination_dataset],
|
91
|
+
source_table: config[:source_table],
|
92
|
+
source_dataset: config[:source_dataset],
|
93
|
+
write_disposition: config[:write_disposition],
|
94
|
+
)
|
95
|
+
end
|
96
|
+
|
97
|
+
def insert_select
|
98
|
+
client.insert_select(
|
99
|
+
query: config[:query],
|
100
|
+
destination_table: config[:destination_table],
|
101
|
+
destination_dataset: config[:destination_dataset],
|
102
|
+
write_disposition: config[:write_disposition],
|
103
|
+
)
|
104
|
+
end
|
84
105
|
end
|
85
106
|
end
|
@@ -107,6 +107,9 @@ class BigqueryMigration
|
|
107
107
|
begin
|
108
108
|
result = get_table
|
109
109
|
response = result[:responses][:get_table]
|
110
|
+
return [] unless response
|
111
|
+
return [] unless response.schema
|
112
|
+
return [] unless response.schema.fields
|
110
113
|
response.schema.fields.map {|column| column.to_h }
|
111
114
|
rescue NotFoundError
|
112
115
|
return []
|
@@ -470,10 +473,11 @@ class BigqueryMigration
|
|
470
473
|
end
|
471
474
|
alias :add_column :patch_table
|
472
475
|
|
473
|
-
def copy_table(destination_table:, destination_dataset: nil, source_table: nil, source_dataset: nil, write_disposition:
|
476
|
+
def copy_table(destination_table:, destination_dataset: nil, source_table: nil, source_dataset: nil, write_disposition: nil)
|
474
477
|
source_table ||= self.table
|
475
478
|
source_dataset ||= self.dataset
|
476
479
|
destination_dataset ||= source_dataset
|
480
|
+
write_disposition ||= 'WRITE_TRUNCATE'
|
477
481
|
|
478
482
|
body = {
|
479
483
|
configuration: {
|
@@ -509,9 +513,10 @@ class BigqueryMigration
|
|
509
513
|
}
|
510
514
|
end
|
511
515
|
|
512
|
-
def insert_select(query:, destination_table: nil, destination_dataset: nil, write_disposition:
|
516
|
+
def insert_select(query:, destination_table: nil, destination_dataset: nil, write_disposition: nil)
|
513
517
|
destination_table ||= self.table
|
514
518
|
destination_dataset ||= self.dataset
|
519
|
+
write_disposition ||= 'WRITE_TRUNCATE'
|
515
520
|
|
516
521
|
body = {
|
517
522
|
configuration: {
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bigquery_migration
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0.
|
4
|
+
version: 0.1.0.pre6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Naotoshi Seo
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google-api-client
|
@@ -141,7 +141,10 @@ files:
|
|
141
141
|
- bigquery_migration.gemspec
|
142
142
|
- bin/console
|
143
143
|
- bin/setup
|
144
|
+
- example/copy_table.yml
|
144
145
|
- example/example.yml
|
146
|
+
- example/insert_select.yml
|
147
|
+
- example/migrate_table.yml
|
145
148
|
- example/schema.json
|
146
149
|
- exe/bq_migrate
|
147
150
|
- lib/bigquery_migration.rb
|
data/example/example.yml
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
bigquery: &bigquery
|
2
|
-
json_keyfile: example/your-project-000.json
|
3
|
-
dataset: your_dataset_name
|
4
|
-
table: your_table_name
|
5
|
-
|
6
|
-
actions:
|
7
|
-
- action: create_dataset
|
8
|
-
<<: *bigquery
|
9
|
-
- action: migrate_table
|
10
|
-
<<: *bigquery
|
11
|
-
columns:
|
12
|
-
- { name: 'timestamp', type: 'TIMESTAMP' }
|
13
|
-
- name: 'record'
|
14
|
-
type: 'RECORD'
|
15
|
-
fields:
|
16
|
-
- { name: 'string', type: 'STRING' }
|
17
|
-
- { name: 'integer', type: 'INTEGER' }
|
18
|
-
- action: migrate_table
|
19
|
-
<<: *bigquery
|
20
|
-
schema_file: example/schema.json
|
21
|
-
- action: delete_table
|
22
|
-
<<: *bigquery
|