teradata-extractor 0.0.2-java → 1.0.0-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bb6b35ee85d2aba0a12ff988e734ba401a47b49b
4
- data.tar.gz: eac262cd69b0bb8edb41529471099c442d3bc147
3
+ metadata.gz: afc783b0c9181aa6ab5a5f075f13bc5ecc69c802
4
+ data.tar.gz: d35e6e4416dda314574703ce25068c5ae86fc5ae
5
5
  SHA512:
6
- metadata.gz: 83211e6ba11514d107799e5972c04b193034b2ec197f00ff48fdee22acb1623a09eee5d05157c964bfdf7a9fb33489dd1553b346d35bedd9df0a8030102e1d66
7
- data.tar.gz: 3bd4233db617cb4c79796656545a9377c44fc857a7e0df8e39c90b2594597829d1c96075bad0f2a8058998a3acd70a00b96eafb8381e494f45e8aa4dd045db49
6
+ metadata.gz: 2d80e3d4c91195f7cc4956f80e5cddfb3ad40b2b9554253ee0e94d584db8f357ea78b1dbc4979eac78ee359eb9d0a69082afceb6f5251aee5f404036a6f3b387
7
+ data.tar.gz: 773857b14c9c7bc468cc9fc93d540fc9d2c1c6a60b27abb8bccaa501f966c54eb81b7ebae66498eec69ef2801c26d05fbf75a895813d79ae67c76be6a9cecce1
@@ -1,5 +1,4 @@
1
1
  require 'rubygems'
2
2
  require 'teradata-extractor/connection'
3
3
  require 'teradata-extractor/query'
4
- require 'rails'
5
4
 
@@ -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
- def to_enumerable(sql)
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
- #results = conn.execute_query("select TOP 10 country_id, sf_account_id, country_name from emea_analytics.eu_deal_flat")
17
- e = Enumerator.new do |y|
18
- column_count = results.getMetaData.getColumnCount;
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.getMetaData.getColumnName(i).to_sym
23
- row[column_name] = to_ruby_type(results.getObject(i))
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
- def to_csv(sql)
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
- #results = conn.execute_query("select TOP 10 country_id, sf_account_id, country_name from emea_analytics.eu_deal_flat")
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
- while(results.next) do
38
- row = []
39
- 1.upto(column_count) do |i|
40
- row << to_ruby_type(results.getObject(i))
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
- csv << row
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.to_string.to_i
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.2
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-12 00:00:00.000000000 Z
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: []