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 +5 -5
- data/Gemfile.lock +1 -1
- data/exe/csvsql +5 -1
- data/lib/csvsql/db.rb +8 -5
- data/lib/csvsql/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: dce133a74ba9ec0a5b04f8707ac7726050479c36
|
4
|
+
data.tar.gz: ae991420839c6c9d384c540e0682643abb48cef7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69c18609d496c4879f6d27baf5b27e93f765d3875ed3302cbd87782d6f88d48dc45ba84e7156d379055bdf372e72644c9d535848875774dec531579ac5fb40e8
|
7
|
+
data.tar.gz: 55a2436a8e436d4e674f0dc0879131c9de5be513723ddd93cf22df3f379631f2a8208acdd85d5091c6358fde0352ee3941003a514491653912b256549020a4f8
|
data/Gemfile.lock
CHANGED
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(
|
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 <<
|
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 @
|
117
|
-
$stderr.puts(
|
119
|
+
if @sql_error_action == :exit
|
120
|
+
$stderr.puts(err.message)
|
118
121
|
exit
|
119
122
|
else
|
120
123
|
raise err
|
data/lib/csvsql/version.rb
CHANGED
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.
|
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.
|
127
|
+
rubygems_version: 2.6.13
|
128
128
|
signing_key:
|
129
129
|
specification_version: 4
|
130
130
|
summary: Process csv with SQL.
|