slyce 1.2.7 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/slyce +23 -5
- data/bin/slyced +3 -3
- data/slyce.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2ba003aec5b58e63630c2b5fc40437ecfc841e8b2c2239fea6fba2cc785687d8
|
4
|
+
data.tar.gz: 3713c8ea0c95383fad5151012553a4f22fba837925d19839bcef5abadba1b2d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e93706e9acd8ce49b35d1c47c19cffb388ab3e77dbe1cdeff9f1e817c3b89d5b854edbafb1422951d82b4a395c63882cf6f267c4bff772597a830ea13cc98c42
|
7
|
+
data.tar.gz: cec5303f23cd5e5370c349e566f1afed2d5a7f3a6b094aede4ba7c851aeaf2ef76f58adfe1148660b3e852bfea4923ade8dab40ae73e9c656560f55a210f05d6
|
data/bin/slyce
CHANGED
@@ -11,7 +11,7 @@ dbas = nil
|
|
11
11
|
tabl = nil
|
12
12
|
|
13
13
|
OptionParser.new.instance_eval do
|
14
|
-
@version = "1.
|
14
|
+
@version = "1.3.1"
|
15
15
|
@banner = "usage: #{program_name} [options] <database> <table>"
|
16
16
|
|
17
17
|
on "--csv" , "Output comma separated values"
|
@@ -23,9 +23,10 @@ OptionParser.new.instance_eval do
|
|
23
23
|
on "-n", "--natural" , "Sort naturally, not numerically"
|
24
24
|
on "-r", "--rows <count>" , "Rows of data to show", Integer
|
25
25
|
on "-s", "--suppress" , "Suppress header when exporting delimited files"
|
26
|
+
on "-t", "--tables" , "Display table names and quit"
|
26
27
|
on "-v", "--version" , "Show version number" do Kernel.abort "#{program_name} #{@version}"; end
|
27
28
|
on "-w", "--where <cond>" , "Where clause (eg - 'age>50 and state='AZ')"
|
28
|
-
on "-x", "--extract <
|
29
|
+
on "-x", "--extract <a,b,c...>" , "Comma separated list of columns (or tables) to extract"
|
29
30
|
|
30
31
|
self
|
31
32
|
end.parse!(into: opts={}) rescue abort($!.message)
|
@@ -43,7 +44,7 @@ show = opts[:rows ]
|
|
43
44
|
want = opts[:extract].to_s.downcase.split(",")
|
44
45
|
|
45
46
|
dbas ||= ARGV.shift or abort "no database given"
|
46
|
-
tabl ||= ARGV.shift or abort "no table given"
|
47
|
+
tabl ||= ARGV.shift or opts[:tables] or !want.empty? or abort "no table given"
|
47
48
|
|
48
49
|
[xcsv, xpsv, xtsv].compact.size > 1 and abort "only one of csv, psv, or tsv allowed"
|
49
50
|
|
@@ -75,6 +76,7 @@ end
|
|
75
76
|
|
76
77
|
# ==[ Let 'er rip! ]==
|
77
78
|
|
79
|
+
# get database connection
|
78
80
|
if dbas.include?("/")
|
79
81
|
dbas = $' if dbas =~ %r|^mysql://| # drop mysql:// prefix, if present
|
80
82
|
auth, dbas = dbas.split("/", 2)
|
@@ -95,7 +97,18 @@ else
|
|
95
97
|
end
|
96
98
|
|
97
99
|
conn = Mysql2::Client.new(**conf, as: :array)
|
98
|
-
|
100
|
+
|
101
|
+
# get table names
|
102
|
+
if tabl.nil? || opts[:tables]
|
103
|
+
resu = conn.sql("show tables")
|
104
|
+
tbls = resu.to_a.flatten
|
105
|
+
want = (want.empty? || opts[:tables]) ? tbls : want.select {|e| tbls.include?(e) }
|
106
|
+
puts want
|
107
|
+
exit
|
108
|
+
end
|
109
|
+
|
110
|
+
# get column names
|
111
|
+
resu = conn.sql("select * from `#{tabl}` limit 0")
|
99
112
|
cols = resu.fields
|
100
113
|
want = want.empty? ? cols : want.select {|e| cols.include?(e) }
|
101
114
|
|
@@ -121,7 +134,7 @@ if xprt
|
|
121
134
|
|
122
135
|
seps = xcsv ? "," : xtsv ? "\t" : xpsv ? "|" : abort("unknown separator #{seps.inspect}")
|
123
136
|
|
124
|
-
Censive.
|
137
|
+
Censive.write(sep: seps) do |csv|
|
125
138
|
csv << want unless hide
|
126
139
|
data.each do |row|
|
127
140
|
csv << row.map {|e| asky ? AnyAscii.transliterate(e.to_s) : e.to_s }
|
@@ -131,6 +144,11 @@ if xprt
|
|
131
144
|
exit
|
132
145
|
end
|
133
146
|
|
147
|
+
# MySQL 5.7 compatible version (still need to find replacement for regexp_instr)
|
148
|
+
# -if((`#{name}` rlike '^[-+]?((0|([1-9]\\\\d*)(\\\\.\\\\d*)?)|((0|([1-9]\\\\d*))\\\\.\\\\d+))$'), `#{name}` + 0, null) desc,
|
149
|
+
# -if((`#{name}` rlike '^0\\\\d+$'), length(`#{name}`), null) desc,
|
150
|
+
# -if((`#{name}` rlike '^\\\\d'), regexp_instr(`#{name}`, '[^\\\\d]'), null) desc,
|
151
|
+
|
134
152
|
want.each do |name|
|
135
153
|
sort = natu ? "" : "cnt desc,"
|
136
154
|
stmt = show ? "limit #{show}" : ""
|
data/bin/slyced
CHANGED
@@ -11,7 +11,7 @@ dbas = nil
|
|
11
11
|
tabl = nil
|
12
12
|
|
13
13
|
OptionParser.new.instance_eval do
|
14
|
-
@version = "1.
|
14
|
+
@version = "1.3.1"
|
15
15
|
@banner = "usage: #{program_name} [options] <database> <table>"
|
16
16
|
|
17
17
|
on "--csv" , "Output comma separated values"
|
@@ -25,7 +25,7 @@ OptionParser.new.instance_eval do
|
|
25
25
|
on "-s", "--suppress" , "Suppress header when exporting delimited files"
|
26
26
|
on "-v", "--version" , "Show version number" do Kernel.abort "#{program_name} #{@version}"; end
|
27
27
|
on "-w", "--where <cond>" , "Where clause (eg - 'age>50 and state='AZ')"
|
28
|
-
on "-x", "--extract <
|
28
|
+
on "-x", "--extract <a,b,c...>" , "Comma separated list of columns to extract"
|
29
29
|
|
30
30
|
self
|
31
31
|
end.parse!(into: opts={}) rescue abort($!.message)
|
@@ -107,7 +107,7 @@ if xprt
|
|
107
107
|
|
108
108
|
seps = xcsv ? "," : xtsv ? "\t" : xpsv ? "|" : abort("unknown separator #{seps.inspect}")
|
109
109
|
|
110
|
-
Censive.
|
110
|
+
Censive.write(sep: seps) do |csv|
|
111
111
|
csv << want unless hide
|
112
112
|
data.each do |row|
|
113
113
|
csv << row.map {|e| asky ? AnyAscii.transliterate(e.to_s) : e.to_s }
|
data/slyce.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.files = `git ls-files`.split("\n") - %w[.gitignore]
|
13
13
|
s.executables = `cd bin && git ls-files .`.split("\n")
|
14
14
|
s.add_runtime_dependency "any_ascii", "~> 0.3.2"
|
15
|
-
s.add_runtime_dependency "censive", "~> 1.0
|
15
|
+
s.add_runtime_dependency "censive", "~> 1.1.0"
|
16
16
|
s.add_runtime_dependency "duckdb", "~> 0.8.0"
|
17
17
|
s.add_runtime_dependency "extralite-bundle", "~> 1.25"
|
18
18
|
s.add_runtime_dependency "mysql2", "~> 0.5"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slyce
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steve Shreeve
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-06-
|
11
|
+
date: 2023-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: any_ascii
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.0
|
33
|
+
version: 1.1.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.0
|
40
|
+
version: 1.1.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: duckdb
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|