csvsql 0.1.2 → 0.1.3

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
- SHA256:
3
- metadata.gz: 399abac44119bfde664bcf81ac25f8c2b61271d8abefbdb616488ca21fbdc343
4
- data.tar.gz: b7ffecdfe6a9fc94014bd23ebe1ce10928501d934bce6045eb0ccdaaf70ba6b3
2
+ SHA1:
3
+ metadata.gz: dce133a74ba9ec0a5b04f8707ac7726050479c36
4
+ data.tar.gz: ae991420839c6c9d384c540e0682643abb48cef7
5
5
  SHA512:
6
- metadata.gz: 1455183640dda81a26234dfd2a072e4ef4e076776e62ad28727601d688493c49e42d264e3918226d1a661a4365f9f408f30a9fd30cc3e0beca2e1cd4f332df0e
7
- data.tar.gz: 90ef8555cbfd7022f2acd8057a284c76f0ce697f125549aff58116ea028c1432e1f5a3ab8c518972d80bd3547cdfda8881c1846b9074dbf1af97699ca6ffafb7
6
+ metadata.gz: 69c18609d496c4879f6d27baf5b27e93f765d3875ed3302cbd87782d6f88d48dc45ba84e7156d379055bdf372e72644c9d535848875774dec531579ac5fb40e8
7
+ data.tar.gz: 55a2436a8e436d4e674f0dc0879131c9de5be513723ddd93cf22df3f379631f2a8208acdd85d5091c6358fde0352ee3941003a514491653912b256549020a4f8
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- csvsql (0.1.1)
4
+ csvsql (0.1.3)
5
5
  sqlite3 (~> 1.3.13)
6
6
 
7
7
  GEM
data/exe/csvsql CHANGED
@@ -47,4 +47,8 @@ end
47
47
 
48
48
  csv_data = options[:csv_path] || StringIO.new($stdin.read)
49
49
 
50
- puts Csvsql.execute(ARGV[0], csv_data, use_cache: options[:use_cache], batch_rows: options[:batch_rows])
50
+ puts Csvsql.execute(
51
+ ARGV[0], csv_data,
52
+ use_cache: options[:use_cache], batch_rows: options[:batch_rows], sql_error_action: 'exit'
53
+ )
54
+
data/lib/csvsql/db.rb CHANGED
@@ -14,12 +14,13 @@ class Csvsql::Db
14
14
  FileUtils.rm_f(Dir.glob(File.join(CACHE_DIR, '*')))
15
15
  end
16
16
 
17
- def initialize(use_cache: false, batch_rows: nil)
17
+ def initialize(use_cache: false, batch_rows: nil, sql_error_action: nil)
18
18
  @db = nil
19
19
  @csv_io = nil
20
20
  @csv_path = nil
21
21
  @use_cache = use_cache
22
22
  @batch_rows = batch_rows || BATCH_ROWS
23
+ @sql_error_action = (sql_error_action || :raise).to_sym
23
24
  end
24
25
 
25
26
  # action:
@@ -77,7 +78,7 @@ class Csvsql::Db
77
78
  col_names = header.map(&:first)
78
79
  Csvsql::Tracker.commit(:import_csv)
79
80
  csv.each do |line|
80
- cache << line.each_with_index.map { |v, i| format_sql_val(v, header[i][1]) }
81
+ cache << header.each_with_index.map { |h, i| format_sql_val(line[i], h[1]) }
81
82
 
82
83
  if cache.length >= batch_rows then
83
84
  import_lines(cache, col_names)
@@ -98,6 +99,8 @@ class Csvsql::Db
98
99
  end
99
100
 
100
101
  def format_sql_val(val, type)
102
+ return 'null' if val.nil? || val.to_s.strip.empty?
103
+
101
104
  case type
102
105
  when :int, :integer then val.to_i
103
106
  when :float, :double then val.to_f
@@ -107,14 +110,14 @@ class Csvsql::Db
107
110
  "'#{val.gsub("'", "''")}'"
108
111
  end
109
112
  rescue => e
110
- process_sql_error("Parse val: #{val}", e)
113
+ process_sql_error("Parse #{type} val: #{val}", e)
111
114
  end
112
115
 
113
116
  def process_sql_error(sql, err)
114
117
  $stderr.puts(sql)
115
118
 
116
- if @error_action == :exit
117
- $stderr.puts(e.message)
119
+ if @sql_error_action == :exit
120
+ $stderr.puts(err.message)
118
121
  exit
119
122
  else
120
123
  raise err
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Csvsql
4
- VERSION = "0.1.2"
4
+ VERSION = "0.1.3"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: csvsql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - jiangzhi.xie
@@ -124,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
124
  version: '0'
125
125
  requirements: []
126
126
  rubyforge_project:
127
- rubygems_version: 2.7.6
127
+ rubygems_version: 2.6.13
128
128
  signing_key:
129
129
  specification_version: 4
130
130
  summary: Process csv with SQL.