bulk_importer 0.2.3 → 0.2.4
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 +4 -4
- data/lib/bulk_importer.rb +26 -12
- data/lib/bulk_importer/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: af9d570d6a791d9d02cbe11d50a57c1dd6dd6ca4
|
|
4
|
+
data.tar.gz: d042e00d1a22c6ecb5d5a8c5daa5d913c7456728
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a5ff4f2c15edc96c34cba15f2fe61d91de9814a30d344b7badf94ee98cea23238551380899fd040dd35c52282df1724907eb4c9545db7addaa80378cb12cd456
|
|
7
|
+
data.tar.gz: de193bea6a534bbc4280ceffe941135d6e280d00512267aaa64a8aafabe9fd607e8cf859a83958d4cedc1d38b33556132ff24056cddf4eeb364848317e5d5665
|
data/lib/bulk_importer.rb
CHANGED
|
@@ -203,22 +203,36 @@ module BulkImporter
|
|
|
203
203
|
o_columns_without_keys = columns.keys.delete_if { |i| keys.has_key? i }
|
|
204
204
|
d_columns_without_keys = columns.values.delete_if { |i| keys.has_value? i }
|
|
205
205
|
|
|
206
|
-
sql << "WITH #{origin}_prexistent_modified AS ("
|
|
207
|
-
sql << "SELECT o.* FROM #{origin} o JOIN #{destination} d"
|
|
208
|
-
sql << "ON (#{self.keys_to_list(keys.keys, 'o', types)}) = "
|
|
209
|
-
sql << "(#{self.keys_to_list(keys.values, 'd')}) AND "
|
|
210
|
-
sql << "(#{self.keys_to_list(o_columns_without_keys, 'o', types)}) != "
|
|
211
|
-
sql << "(#{self.keys_to_list(d_columns_without_keys, 'd')})"
|
|
212
|
-
sql << ")"
|
|
213
|
-
sql << "UPDATE #{destination} d SET"
|
|
214
206
|
set = []
|
|
215
207
|
columns.delete_if { |item| columns[item].nil? }.keys.each do |column|
|
|
216
208
|
set << "#{columns[column]} = o.#{column}::#{types[column]}"
|
|
217
209
|
end
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
210
|
+
sets = set.join(',')
|
|
211
|
+
|
|
212
|
+
if columns.has_value? 'updated_at'
|
|
213
|
+
# Field is updated if origin's updated_at is greater than destination.
|
|
214
|
+
|
|
215
|
+
PostgresqlModule.create_index_on origin, columns.invert['updated_at'].downcase
|
|
216
|
+
|
|
217
|
+
sql << "UPDATE #{destination} d SET #{sets}"
|
|
218
|
+
sql << "FROM #{origin} o"
|
|
219
|
+
sql << "WHERE (#{self.keys_to_list(keys.keys, 'o', types)}) = "
|
|
220
|
+
sql << "(#{self.keys_to_list(keys.values, 'd')}) AND"
|
|
221
|
+
sql << "o.#{columns.invert['updated_at'].downcase}::timestamp > d.updated_at"
|
|
222
|
+
else
|
|
223
|
+
# Check if any field changed
|
|
224
|
+
sql << "WITH #{origin}_prexistent_modified AS ("
|
|
225
|
+
sql << "SELECT o.* FROM #{origin} o JOIN #{destination} d"
|
|
226
|
+
sql << "ON (#{self.keys_to_list(keys.keys, 'o', types)}) = "
|
|
227
|
+
sql << "(#{self.keys_to_list(keys.values, 'd')}) AND "
|
|
228
|
+
sql << "(#{self.keys_to_list(o_columns_without_keys, 'o', types)}) != "
|
|
229
|
+
sql << "(#{self.keys_to_list(d_columns_without_keys, 'd')})"
|
|
230
|
+
sql << ")"
|
|
231
|
+
sql << "UPDATE #{destination} d SET #{sets}"
|
|
232
|
+
sql << "FROM #{origin}_prexistent_modified o"
|
|
233
|
+
sql << "WHERE (#{self.keys_to_list(keys.keys, 'o', types)}) = "
|
|
234
|
+
sql << "(#{self.keys_to_list(keys.values, 'd')})"
|
|
235
|
+
end
|
|
222
236
|
|
|
223
237
|
q << sql.join(' ')
|
|
224
238
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bulk_importer
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Abel M. Osorio
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-12-
|
|
11
|
+
date: 2016-12-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|