data_resurrection 0.1.0 → 0.1.1
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.
- data/README.rdoc +8 -0
- data/lib/data_resurrection/adapters.rb +18 -9
- metadata +10 -10
data/README.rdoc
CHANGED
@@ -2,6 +2,14 @@
|
|
2
2
|
|
3
3
|
Bring your data, buried in decrepit formats, back to life! Convert data from old formats to modern ones. Currently supports DBF.
|
4
4
|
|
5
|
+
|
6
|
+
== How to install
|
7
|
+
|
8
|
+
Just run:
|
9
|
+
|
10
|
+
$ gem install data_resurrection
|
11
|
+
|
12
|
+
|
5
13
|
== How to use
|
6
14
|
|
7
15
|
If you have a PostgreSQL database and a DBF file called 'decrepit.dbf', you must call:
|
@@ -7,25 +7,30 @@ module DataResurrection
|
|
7
7
|
module Adapters
|
8
8
|
module DBF
|
9
9
|
def resurrect(origin_table, options)
|
10
|
-
target_table_name
|
10
|
+
target_table_name = options[:target]
|
11
|
+
from, to = options[:from], options[:to]
|
11
12
|
field_types = options[:field_types]
|
12
13
|
table = ::DBF::Table.new(origin_table)
|
13
|
-
|
14
|
+
encodings = from.present? ? {from: from, to: to} : nil
|
15
|
+
data = get_data(table, encodings, reserved_words)
|
14
16
|
create_table(table, target_table_name, data, field_types)
|
15
17
|
copy_data(target_table_name, data)
|
16
18
|
end
|
17
19
|
|
18
20
|
def get_data(table, encodings=nil, reserved_words=[])
|
19
21
|
result = get_raw_data(table, reserved_words)
|
20
|
-
result = handle_encodings(result, encodings) if encodings
|
22
|
+
result = handle_encodings(result, encodings) if encodings.present?
|
21
23
|
result
|
22
24
|
end
|
23
25
|
|
24
26
|
private
|
25
27
|
|
26
28
|
def create_table(table, table_name, data, field_types)
|
27
|
-
schema =
|
28
|
-
|
29
|
+
schema = table.schema
|
30
|
+
mark_name_clashed_fields(schema,
|
31
|
+
table.columns.map {|c| generated_field_name(c.name.downcase, reserved_words) })
|
32
|
+
replace_table_name(schema, table_name)
|
33
|
+
replace_types(schema, field_types) if field_types
|
29
34
|
eval(schema)
|
30
35
|
end
|
31
36
|
|
@@ -70,13 +75,18 @@ module DataResurrection
|
|
70
75
|
end
|
71
76
|
end
|
72
77
|
|
73
|
-
def mark_name_clashed_fields(schema,
|
74
|
-
|
78
|
+
def mark_name_clashed_fields(schema, field_names)
|
79
|
+
field_names.each do |field|
|
75
80
|
if !schema.include?('column "%s"' % field)
|
76
81
|
schema['column "%s"' % field.chop] = 'column "%s"' % field
|
77
82
|
end
|
78
83
|
end
|
79
|
-
|
84
|
+
end
|
85
|
+
|
86
|
+
def replace_table_name(schema, new_table_name)
|
87
|
+
schema =~ /create_table "(.+)"/
|
88
|
+
old_table_name = $1
|
89
|
+
schema['create_table "%s"' % old_table_name] = 'create_table "%s"' % new_table_name
|
80
90
|
end
|
81
91
|
|
82
92
|
def replace_types(schema, field_types)
|
@@ -88,7 +98,6 @@ module DataResurrection
|
|
88
98
|
schema['column "%s", :%s%s' % [field, old_type, tail]] =
|
89
99
|
'column "%s", :%s%s' % [field, new_type, tail]
|
90
100
|
end
|
91
|
-
schema
|
92
101
|
end
|
93
102
|
|
94
103
|
def all_valid?(string)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: data_resurrection
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-08-
|
12
|
+
date: 2011-08-30 00:00:00.000000000 -03:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activerecord
|
17
|
-
requirement: &
|
17
|
+
requirement: &7166360 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 3.0.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *7166360
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: dbf
|
28
|
-
requirement: &
|
28
|
+
requirement: &7165900 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 1.5.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *7165900
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: sqlite3
|
39
|
-
requirement: &
|
39
|
+
requirement: &7205600 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 1.3.0
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *7205600
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: rspec
|
50
|
-
requirement: &
|
50
|
+
requirement: &7205140 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ~>
|
@@ -55,7 +55,7 @@ dependencies:
|
|
55
55
|
version: 2.6.0
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *7205140
|
59
59
|
description: Converts DBF to modern formats.
|
60
60
|
email: rmanhaes@gmail.com
|
61
61
|
executables: []
|