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