teradata-extractor 0.0.2-java → 1.0.0-java
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/lib/teradata-extractor.rb +0 -1
- data/lib/teradata-extractor/query.rb +33 -20
- metadata +30 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: afc783b0c9181aa6ab5a5f075f13bc5ecc69c802
|
4
|
+
data.tar.gz: d35e6e4416dda314574703ce25068c5ae86fc5ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d80e3d4c91195f7cc4956f80e5cddfb3ad40b2b9554253ee0e94d584db8f357ea78b1dbc4979eac78ee359eb9d0a69082afceb6f5251aee5f404036a6f3b387
|
7
|
+
data.tar.gz: 773857b14c9c7bc468cc9fc93d540fc9d2c1c6a60b27abb8bccaa501f966c54eb81b7ebae66498eec69ef2801c26d05fbf75a895813d79ae67c76be6a9cecce1
|
data/lib/teradata-extractor.rb
CHANGED
@@ -3,52 +3,65 @@ require 'csv'
|
|
3
3
|
module TeradataExtractor
|
4
4
|
class Query
|
5
5
|
|
6
|
-
# @param [com.teradata.jdbc.jdk6.JDK6_SQL_Connection] Teradata connection
|
7
|
-
# @param [#to_s] sql Sql query to execute
|
8
6
|
def initialize(server_name, username, password)
|
9
|
-
|
10
7
|
@connection = TeradataExtractor::Connection.instance.connection(server_name, username, password)
|
11
8
|
@statement ||= @connection.create_statement
|
12
9
|
end
|
13
10
|
|
14
|
-
|
11
|
+
# returns an enumerable, each element of which is a hash in the format {column1: value1, column2: value2}
|
12
|
+
def enumerable(sql, fetch_size = 1000)
|
15
13
|
results = @statement.execute_query(sql)
|
16
|
-
|
17
|
-
|
18
|
-
column_count = results.
|
14
|
+
|
15
|
+
Enumerator.new do |y|
|
16
|
+
column_count = results.get_meta_data.get_column_count
|
19
17
|
while(results.next) do
|
20
18
|
row = {}
|
21
19
|
1.upto(column_count) do |i|
|
22
|
-
column_name = results.
|
23
|
-
row[column_name] = to_ruby_type(results.
|
20
|
+
column_name = results.get_meta_data.get_column_name(i).to_sym
|
21
|
+
row[column_name] = to_ruby_type(results.get_object(i))
|
24
22
|
end
|
25
23
|
y << row
|
26
24
|
end
|
27
25
|
end
|
28
26
|
end
|
29
27
|
|
30
|
-
|
28
|
+
# returns an array of column names, and an enumberator,
|
29
|
+
# each item of the enumerator contains a single StringIO object, the value
|
30
|
+
# of which is a CSV string containing [step] rows.
|
31
|
+
def csv_string_io(sql, fetch_size = 1000)
|
31
32
|
results = @statement.execute_query(sql)
|
32
|
-
|
33
|
-
CSV.generate do |csv|
|
34
|
-
column_count = results.getMetaData.getColumnCount;
|
35
|
-
csv << 1.upto(column_count).map{|i| results.getMetaData.getColumnName(i)}
|
33
|
+
results.set_fetch_size(fetch_size)
|
36
34
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
35
|
+
column_count = results.get_meta_data.get_column_count
|
36
|
+
headers = 1.upto(column_count).map{|i| results.get_meta_data.get_column_name(i)}
|
37
|
+
|
38
|
+
enum = Enumerator.new do |y|
|
39
|
+
finished = false
|
40
|
+
while(!finished) do
|
41
|
+
rows = []
|
42
|
+
csv_string = CSV.generate do |csv|
|
43
|
+
|
44
|
+
fetch_size.times do
|
45
|
+
unless results.next
|
46
|
+
finished = true
|
47
|
+
break
|
48
|
+
end
|
49
|
+
values = 1.upto(column_count).map{|i| to_ruby_type(results.get_object(i)) }
|
50
|
+
csv << values
|
51
|
+
end
|
41
52
|
end
|
42
|
-
|
53
|
+
y << StringIO.new(csv_string)
|
43
54
|
end
|
44
55
|
end
|
56
|
+
|
57
|
+
return [headers, enum]
|
45
58
|
end
|
46
59
|
|
47
60
|
protected
|
48
61
|
|
49
62
|
def to_ruby_type(java_object)
|
50
63
|
if java_object.is_a?(Java::JavaMath::BigDecimal)
|
51
|
-
return java_object.
|
64
|
+
return java_object.intValueExact rescue java_object.doubleValue
|
52
65
|
elsif java_object.is_a?(Java::JavaSql::Date)
|
53
66
|
return Date.parse(java_object.to_string)
|
54
67
|
else
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: teradata-extractor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Steve Mitchell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jdbc-teradata
|
@@ -24,6 +24,34 @@ dependencies:
|
|
24
24
|
version: '0'
|
25
25
|
prerelease: false
|
26
26
|
type: :runtime
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
prerelease: false
|
40
|
+
type: :development
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry
|
43
|
+
version_requirements: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - '>='
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '0'
|
53
|
+
prerelease: false
|
54
|
+
type: :development
|
27
55
|
description: Get your data from Teradata AND GET TO THE CHOPPER!
|
28
56
|
email: thestevemitchell@gmail.com
|
29
57
|
executables: []
|