dbtools 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +333 -0
- data/Thorfile +1 -0
- data/bin/dbtools +5 -0
- data/config/client_secret_dbtools.json +1 -0
- data/config/config.yml +1 -0
- data/config/database_config.yml +12 -0
- data/config/databases.txt +5 -0
- data/config/schedule.rb +8 -0
- data/dbtools.gemspec +37 -0
- data/lib/dbtools.rb +47 -0
- data/lib/dbtools/constants.rb +847 -0
- data/lib/dbtools/converter/csv2rdf_converter.rb +68 -0
- data/lib/dbtools/converter/csv_importer.rb +107 -0
- data/lib/dbtools/converter/excel2csv_converter.rb +40 -0
- data/lib/dbtools/converter/google_drive2_rdf_converter.rb +97 -0
- data/lib/dbtools/database/database_data.rb +146 -0
- data/lib/dbtools/database/db_connection.rb +236 -0
- data/lib/dbtools/database/mysql_connection.rb +78 -0
- data/lib/dbtools/database/postgresql_connection.rb +132 -0
- data/lib/dbtools/database/violation.rb +45 -0
- data/lib/dbtools/google_drive/google_drive_api.rb +211 -0
- data/lib/dbtools/google_drive/google_drive_entity.rb +22 -0
- data/lib/dbtools/google_drive/google_drive_file.rb +10 -0
- data/lib/dbtools/google_drive/google_drive_folder.rb +9 -0
- data/lib/dbtools/plsql_functions/connect_server.sql +30 -0
- data/lib/dbtools/plsql_functions/link.sql +17 -0
- data/lib/dbtools/plsql_functions/unlink.sql +15 -0
- data/lib/dbtools/rdf/rdf_reader.rb +136 -0
- data/lib/dbtools/version.rb +3 -0
- data/lib/rdf/geophy.rb +27 -0
- data/lib/tasks/aws.rb +43 -0
- data/lib/tasks/backup.rb +107 -0
- data/lib/tasks/check.rb +220 -0
- data/lib/tasks/ckan.rb +151 -0
- data/lib/tasks/convert.rb +139 -0
- data/lib/tasks/dump.rb +110 -0
- data/lib/tasks/googledrivetool.rb +252 -0
- data/lib/tasks/import.rb +142 -0
- data/lib/tasks/postgres.rb +29 -0
- metadata +307 -0
data/lib/tasks/import.rb
ADDED
@@ -0,0 +1,142 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'thor'
|
3
|
+
require 'find'
|
4
|
+
require 'dbtools/rdf/rdf_reader'
|
5
|
+
require 'dbtools/constants'
|
6
|
+
require 'dbtools/converter/csv_importer'
|
7
|
+
require 'dbtools/converter/excel2csv_converter'
|
8
|
+
require 'dbtools/database/mysql_connection'
|
9
|
+
require 'dbtools/database/postgresql_connection'
|
10
|
+
require 'dbtools/google_drive/google_drive_api'
|
11
|
+
require 'fileutils'
|
12
|
+
|
13
|
+
module Dbtools
|
14
|
+
class Import < Thor
|
15
|
+
package_name "dbtools"
|
16
|
+
|
17
|
+
def initialize(*args)
|
18
|
+
super
|
19
|
+
load_config
|
20
|
+
end
|
21
|
+
|
22
|
+
# Load a database dump into Postgres.
|
23
|
+
desc 'postgres_dump [database_name. dump_file]', 'Load a database dump into Postgres. Database will be created if it doesn\'t exist'
|
24
|
+
def postgres_dump(database_name, file)
|
25
|
+
system "createdb #{@postgres_connection_options} #{database_name}"
|
26
|
+
system "#{@postgres_connection_command} --dbname=#{database_name} --file=#{file}"
|
27
|
+
return "#{@postgres_connection_url}#{database_name}"
|
28
|
+
end
|
29
|
+
|
30
|
+
desc 'mysql_dump [database_name. dump_file]', 'Load a database dump into MySQL. Database will be created if it doesn\'t exist'
|
31
|
+
def mysql_dump(database_name, file)
|
32
|
+
system "#{@mysql_connection_command} -e 'CREATE DATABASE #{database_name}'"
|
33
|
+
system "#{@mysql_connection_command} < #{file}"
|
34
|
+
return "#{@mysql_connection_url}#{database_name}"
|
35
|
+
end
|
36
|
+
|
37
|
+
desc 'convert_to_utf8 [file]', 'Converts a file to UTF-8 encoding. Replaces the original file.'
|
38
|
+
def convert_to_utf8(filename)
|
39
|
+
puts "Converting #{filename} to utf8"
|
40
|
+
|
41
|
+
#filename_utf8_encoded = "#{filename}_utf8"
|
42
|
+
#system "iconv -f utf-8 -t utf-8 -c < #{filename} > #{filename_utf8_encoded}"
|
43
|
+
|
44
|
+
filename_tmp = filename + '.tmp'
|
45
|
+
filename_old = filename + '.old'
|
46
|
+
|
47
|
+
begin
|
48
|
+
File.open(filename_tmp, 'w') do |file_out|
|
49
|
+
File.foreach(filename) do |line_input|
|
50
|
+
file_out.puts(line_input.encode!('UTF-8', 'UTF-8', :invalid => :replace))
|
51
|
+
end
|
52
|
+
end
|
53
|
+
# Swap filenames
|
54
|
+
File.rename(filename, filename_old)
|
55
|
+
File.rename(filename_tmp, filename)
|
56
|
+
File.rename(filename_old, filename_tmp)
|
57
|
+
rescue Exception => e
|
58
|
+
raise "Failed to convert encoding of file #{filename} to UTF-8 because #{e.message}. "
|
59
|
+
ensure
|
60
|
+
File.delete(filename_tmp)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
desc 'create_schema [csv_file, table_name]', 'Creates a schema based on the csv headers and values in the table'
|
65
|
+
def create_schema(csv_file, table_name)
|
66
|
+
csv = Dbtools::Converter::Csv_importer.new(csv_file, tablename: table_name)
|
67
|
+
puts csv.to_sql_schema_script
|
68
|
+
end
|
69
|
+
|
70
|
+
desc 'csv_in postgres [csv_file, database_name, table_name]', 'Imports a csv file into a postgres database. Automatically creates the database. '
|
71
|
+
def csv_in_postgres(csv_file, database_name, table_name)
|
72
|
+
# Converts file to utf8
|
73
|
+
convert_to_utf8(csv_file)
|
74
|
+
# Sanitize table name
|
75
|
+
table_name = table_name.downcase.gsub(/[^0-9a-zA-Z_]/,'_')
|
76
|
+
|
77
|
+
# Creates a table schema based on the csv.
|
78
|
+
csv = Dbtools::Converter::Csv_importer.new(csv_file, tablename: table_name)
|
79
|
+
csv_schema_command = csv.to_sql_schema_script
|
80
|
+
#copy_csv_command = "\\COPY \"#{table_name}\" FROM '#{csv_file}' DELIMITER '#{csv.delimiter}' CSV HEADER;"
|
81
|
+
|
82
|
+
#system "createdb #{@postgres_connection_options} #{database_name}"
|
83
|
+
|
84
|
+
puts "Importing #{csv_file} into #{database_name}.#{table_name}"
|
85
|
+
# Create the table and copy the csv contents into the table.
|
86
|
+
begin
|
87
|
+
psql = Dbtools::Database::PostgresqlConnection.new("#{@postgres_connection_url}")
|
88
|
+
psql.create_database(database_name)
|
89
|
+
psql.close
|
90
|
+
# Create the database
|
91
|
+
|
92
|
+
psql = Dbtools::Database::PostgresqlConnection.new("#{@postgres_connection_url}#{database_name}")
|
93
|
+
psql.execute_query(csv_schema_command)
|
94
|
+
psql.copy_from_file(csv_file, table_name, csv.delimiter)
|
95
|
+
psql.execute_files(Dbtools::Constants::PLSQL_FUNCTIONS_DIR)
|
96
|
+
ensure
|
97
|
+
psql.close
|
98
|
+
end
|
99
|
+
return "#{@postgres_connection_url}#{database_name}"
|
100
|
+
end
|
101
|
+
|
102
|
+
desc 'excel [database_name, file]', 'Loads an excel file as a csv into the database. '
|
103
|
+
def excel(database_name, file)
|
104
|
+
folder = File.join("/tmp", database_name)
|
105
|
+
# Convert spreadsheets to Excel.
|
106
|
+
files = excel2csv(file, folder)
|
107
|
+
result = ''
|
108
|
+
files.each do |sheet_name, csv_file|
|
109
|
+
begin
|
110
|
+
# Load every file in Postgres
|
111
|
+
table_name = "#{File.basename(csv_file, File.extname(csv_file))}_#{sheet_name}"
|
112
|
+
result = csv_in_postgres(csv_file, database_name, table_name)
|
113
|
+
rescue Exception => e
|
114
|
+
puts "Could not load #{csv_file} into #{database_name} because #{e.message}. "
|
115
|
+
end
|
116
|
+
end
|
117
|
+
FileUtils.remove_entry_secure(folder)
|
118
|
+
return result
|
119
|
+
end
|
120
|
+
|
121
|
+
desc 'excel2csv [file, target_dir]', 'Converts an Excel file to CSV files. Every spreadsheet will be a CSV file.'
|
122
|
+
def excel2csv(file, target_dir)
|
123
|
+
converter = Dbtools::Converter::Excel2csv_converter.new(file)
|
124
|
+
files = converter.output(target_dir)
|
125
|
+
return files
|
126
|
+
end
|
127
|
+
|
128
|
+
|
129
|
+
private
|
130
|
+
# Loads all configurations needed
|
131
|
+
def load_config
|
132
|
+
config = YAML.load(File.read(Dbtools::Constants::DB_TARGET_CONFIG_PATH))
|
133
|
+
postgres_config = config['postgres']
|
134
|
+
mysql_config = config['mysql']
|
135
|
+
@postgres_connection_url = "postgres://#{postgres_config['username']}:#{postgres_config['password']}@#{postgres_config['host']}/"
|
136
|
+
@mysql_connection_url = "mysql2://#{mysql_config['username']}:#{mysql_config['password']}@#{mysql_config['host']}/"
|
137
|
+
@postgres_connection_options = "--username=#{postgres_config['username']} --host=#{postgres_config['host']} --port=#{postgres_config['port']}"
|
138
|
+
@postgres_connection_command = "psql #{@postgres_connection_options}"
|
139
|
+
@mysql_connection_command = "mysql -u #{mysql_config['username']} -p#{mysql_config['password']} -h #{mysql_config['host']}"
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'dbtools/database/postgresql_connection'
|
2
|
+
require 'thor'
|
3
|
+
require 'dbtools/constants'
|
4
|
+
|
5
|
+
module Dbtools
|
6
|
+
class Postgres < Thor
|
7
|
+
package_name "dbtools"
|
8
|
+
|
9
|
+
desc 'load_functions [database_url]', 'Deploys the catalog of pl/sql functions in the specified database.'
|
10
|
+
def load_functions(database_url)
|
11
|
+
db = check_adapter(database_url)
|
12
|
+
# All functions are located in this directory.
|
13
|
+
db.execute_files(Dbtools::Constants::PLSQL_FUNCTIONS_DIR)
|
14
|
+
db.close
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
# Check if the url is a postgres or mysql connection.
|
19
|
+
def check_adapter(url)
|
20
|
+
adapter = url.match("^([a-zA-Z0-9]+):\/\/(.+)@(.+)\/(.*)").captures[0]
|
21
|
+
if adapter == "postgres"
|
22
|
+
return Dbtools::Database::PostgresqlConnection.new(url)
|
23
|
+
else
|
24
|
+
puts "Invalid url"
|
25
|
+
return nil
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
metadata
ADDED
@@ -0,0 +1,307 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dbtools
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Hung Nguyen
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-09-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rdf-reasoner
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.4.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.4.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: thor
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.19.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.19.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: activerecord
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '4.2'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '4.2'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: activesupport
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '4.2'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '4.2'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: activemodel
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '4.2'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '4.2'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: google-api-client
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.9'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0.9'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: linkeddata
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '2.0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '2.0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: whenever
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: roo
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '2.4'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '2.4'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: roo-xls
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '1.0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '1.0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: ru_bee
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0.1'
|
160
|
+
type: :runtime
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0.1'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: mysql2
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0.4'
|
174
|
+
type: :runtime
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0.4'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: pg
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0.18'
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0.18'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: spira
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - "~>"
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: 2.0.0
|
202
|
+
type: :runtime
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - "~>"
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: 2.0.0
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: aws-sdk
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - "~>"
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '2.7'
|
216
|
+
type: :runtime
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - "~>"
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '2.7'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: bundler
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - "~>"
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '1.12'
|
230
|
+
type: :development
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - "~>"
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: '1.12'
|
237
|
+
description:
|
238
|
+
email:
|
239
|
+
- h.nguyen@geophy.com
|
240
|
+
executables:
|
241
|
+
- dbtools
|
242
|
+
extensions: []
|
243
|
+
extra_rdoc_files: []
|
244
|
+
files:
|
245
|
+
- README.md
|
246
|
+
- Thorfile
|
247
|
+
- bin/dbtools
|
248
|
+
- config/client_secret_dbtools.json
|
249
|
+
- config/config.yml
|
250
|
+
- config/database_config.yml
|
251
|
+
- config/databases.txt
|
252
|
+
- config/schedule.rb
|
253
|
+
- dbtools.gemspec
|
254
|
+
- lib/dbtools.rb
|
255
|
+
- lib/dbtools/constants.rb
|
256
|
+
- lib/dbtools/converter/csv2rdf_converter.rb
|
257
|
+
- lib/dbtools/converter/csv_importer.rb
|
258
|
+
- lib/dbtools/converter/excel2csv_converter.rb
|
259
|
+
- lib/dbtools/converter/google_drive2_rdf_converter.rb
|
260
|
+
- lib/dbtools/database/database_data.rb
|
261
|
+
- lib/dbtools/database/db_connection.rb
|
262
|
+
- lib/dbtools/database/mysql_connection.rb
|
263
|
+
- lib/dbtools/database/postgresql_connection.rb
|
264
|
+
- lib/dbtools/database/violation.rb
|
265
|
+
- lib/dbtools/google_drive/google_drive_api.rb
|
266
|
+
- lib/dbtools/google_drive/google_drive_entity.rb
|
267
|
+
- lib/dbtools/google_drive/google_drive_file.rb
|
268
|
+
- lib/dbtools/google_drive/google_drive_folder.rb
|
269
|
+
- lib/dbtools/plsql_functions/connect_server.sql
|
270
|
+
- lib/dbtools/plsql_functions/link.sql
|
271
|
+
- lib/dbtools/plsql_functions/unlink.sql
|
272
|
+
- lib/dbtools/rdf/rdf_reader.rb
|
273
|
+
- lib/dbtools/version.rb
|
274
|
+
- lib/rdf/geophy.rb
|
275
|
+
- lib/tasks/aws.rb
|
276
|
+
- lib/tasks/backup.rb
|
277
|
+
- lib/tasks/check.rb
|
278
|
+
- lib/tasks/ckan.rb
|
279
|
+
- lib/tasks/convert.rb
|
280
|
+
- lib/tasks/dump.rb
|
281
|
+
- lib/tasks/googledrivetool.rb
|
282
|
+
- lib/tasks/import.rb
|
283
|
+
- lib/tasks/postgres.rb
|
284
|
+
homepage:
|
285
|
+
licenses: []
|
286
|
+
metadata: {}
|
287
|
+
post_install_message:
|
288
|
+
rdoc_options: []
|
289
|
+
require_paths:
|
290
|
+
- lib
|
291
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
292
|
+
requirements:
|
293
|
+
- - ">="
|
294
|
+
- !ruby/object:Gem::Version
|
295
|
+
version: '0'
|
296
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
297
|
+
requirements:
|
298
|
+
- - ">="
|
299
|
+
- !ruby/object:Gem::Version
|
300
|
+
version: '0'
|
301
|
+
requirements: []
|
302
|
+
rubyforge_project:
|
303
|
+
rubygems_version: 2.6.10
|
304
|
+
signing_key:
|
305
|
+
specification_version: 4
|
306
|
+
summary: Tool for database maintenance.
|
307
|
+
test_files: []
|