sqlconv 0.8.0 → 0.9

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/sqlconv +19 -5
  3. data/sqlconv.gemspec +1 -1
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 75d8adb86fa58ca1988fa029bbd72c08f08bdce1b2d15d0329aa368de92daa3d
4
- data.tar.gz: b5b86990ec7db00261c0216088fdf5321c13abd650d3011666be6ebbd113b9c2
3
+ metadata.gz: 983c1c2fc4a1dbdd9ee7c4f80af79cf939c6e3c680b620241156eeb35dc7ef0c
4
+ data.tar.gz: 917c85af386c08ad81f711548f41d5b3244a6ecfa607408aae58acc8c759e74a
5
5
  SHA512:
6
- metadata.gz: e7c5bb521f9f461a9518c1d5a83eb5d2a1650bf597968531024ae82a197466244bf5d6ec6af8d864eba793e8d932bcee943e53cba8e274acdeb46c78029ded43
7
- data.tar.gz: 4144482af48a139dd5507403cd698bcc09bdbbf84d97223642d1bd5ce1c596bfa5e9b2524a9f4734f36d222eb7e4b1096e9d5d2b3109fb401f4dbf8ff976ed2d
6
+ metadata.gz: a6eab5df9b47ab5797cc02d832277a9bcf637b7c7131f1caf2f7d7035923bb27d734f7244993201cbf7fece5943da40ad3069d03e9b396e06e480360e1e1467d
7
+ data.tar.gz: 935fd564e8799acbc67831008d4745197f978aea6d13fe4a95b0c2797263267739ce6ba917032471ba89587f3798e2e4c542126214b890177ce66a18d7391a62
data/bin/sqlconv CHANGED
@@ -62,7 +62,7 @@ def grok(want)
62
62
  end
63
63
 
64
64
  # convert the insert statements
65
- def conv(tab1, map1, tab2, map2, repl, dump)
65
+ def conv(tab1, map1, tab2, map2, mode, dump)
66
66
  data = StringScanner.new("")
67
67
  need = grok(map1)
68
68
  cols = nil
@@ -73,7 +73,7 @@ def conv(tab1, map1, tab2, map2, repl, dump)
73
73
 
74
74
  # statement prefix
75
75
  pref = [
76
- "#{repl ? 'replace' : 'insert'} into #{tab2 || tab1}",
76
+ "#{mode == 'replace' ? 'replace' : 'insert'} into #{tab2 || tab1}",
77
77
  (" (#{map2})" if map2),
78
78
  " values (",
79
79
  ].compact.join
@@ -83,6 +83,11 @@ def conv(tab1, map1, tab2, map2, repl, dump)
83
83
  into = data.scan_for(/insert into (['"`]?)#{tab1}\1 values /io)
84
84
  into or die "unable to find insert statements for the '#{tab1}' table"
85
85
 
86
+ # if needed, output pipes header
87
+ if mode == "pipes" && map2
88
+ puts map2.gsub(',','|')
89
+ end
90
+
86
91
  # process each line
87
92
  loop do
88
93
 
@@ -119,6 +124,7 @@ def conv(tab1, map1, tab2, map2, repl, dump)
119
124
  case item.func
120
125
  when "rand" then ours.push("'random number here!'")
121
126
  when "n","null" then ours.push("null")
127
+ when "z" then ours.push((val = cols[item.from-1]) == "NULL" ? 0 : val)
122
128
  else
123
129
  defined?(item.func) == "method" or die "undefined function '#{item.func}'"
124
130
  ours.push *(send item.func, *Array[cols[item.from-1]])
@@ -154,7 +160,12 @@ def conv(tab1, map1, tab2, map2, repl, dump)
154
160
  end
155
161
 
156
162
  # output insert statement
157
- puts [pref, ours * ",", ");"].join
163
+ if mode == "pipes"
164
+ ours.map! {|item| item == "NULL" ? '' : item.gsub("|","~").gsub("''", "'")[1..-2]}
165
+ puts ours * "|"
166
+ else
167
+ puts [pref, ours * ",", ");"].join
168
+ end
158
169
  end
159
170
  end
160
171
 
@@ -173,7 +184,9 @@ ARGV.size.times do
173
184
  end
174
185
 
175
186
  if ARGV.delete "-r"
176
- repl = true
187
+ mode = "replace"
188
+ elsif ARGV.delete "--pipes"
189
+ mode = "pipes"
177
190
  end
178
191
 
179
192
  if ARGV.shift =~ /^([a-z][-\w]*):?(.+)?$/
@@ -192,12 +205,13 @@ end
192
205
  tab1 or die [
193
206
  "Usage: #{File.basename $0}",
194
207
  "[-p <plugin1.rb> [-p <plugin2.rb>]...]",
208
+ "[--pipes] (to output pipe separated values instead of SQL",
195
209
  "[-r] (to use 'replace into' instead of 'insert into')",
196
210
  "<src_table>(:[sel1,sel2,...])",
197
211
  "[dst_table][:][col1,col2,...] file"
198
212
  ] * ' '
199
213
 
200
- conv tab1, map1, tab2 || tab1, map2, repl, ARGF
214
+ conv tab1, map1, tab2 || tab1, map2, mode, ARGF
201
215
 
202
216
  __END__
203
217
 
data/sqlconv.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "sqlconv"
5
- s.version = "0.8.0"
5
+ s.version = "0.9"
6
6
  s.author = "Steve Shreeve"
7
7
  s.email = "steve.shreeve@gmail.com"
8
8
  s.summary = "Handy utility to massage MySQL dump files"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sqlconv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: '0.9'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Shreeve
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-03 00:00:00.000000000 Z
11
+ date: 2019-09-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Allows mapping columns from a source to a destination table
14
14
  email: steve.shreeve@gmail.com
@@ -43,7 +43,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
43
43
  version: '0'
44
44
  requirements: []
45
45
  rubyforge_project:
46
- rubygems_version: 2.7.6
46
+ rubygems_version: 2.7.7
47
47
  signing_key:
48
48
  specification_version: 4
49
49
  summary: Handy utility to massage MySQL dump files