csvsql 0.1.2 → 0.1.3

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 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.