flattendb 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README +5 -3
- data/Rakefile +2 -2
- data/bin/flattendb +4 -2
- data/example/mysql-sample.sql +2 -0
- data/example/mysql-sample2flat.yaml +2 -2
- data/lib/flattendb/base.rb +4 -2
- data/lib/flattendb/cli.rb +4 -2
- data/lib/flattendb/types/mdb.rb +4 -2
- data/lib/flattendb/types/mysql.rb +22 -37
- data/lib/flattendb/version.rb +2 -2
- data/lib/flattendb.rb +4 -2
- metadata +87 -109
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 33d368b4ee2cd36d0e968a8237b66bc349a49352
|
4
|
+
data.tar.gz: e578a7ac382877e76e0523364b7bbd1ffbf5c881
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: fbf89d4936dd20e96717e94d2da16cdf35b6530ed1262cb325b44e63120334f6c5e1967e7afaf07b6fe300819b3b10d9ec41650aafd4240682900bfe1f358143
|
7
|
+
data.tar.gz: c2daea8bd1275ca1e5d2bd85c42d986452aef319acb34d871333fa0398b0697b1abdb51b81027bb35ac974e1f0dd63f23c0f4d5a5149710afbaddba32abd05df
|
data/README
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
== VERSION
|
4
4
|
|
5
|
-
This documentation refers to flattendb version 0.
|
5
|
+
This documentation refers to flattendb version 0.2.0
|
6
6
|
|
7
7
|
|
8
8
|
== DESCRIPTION
|
@@ -20,14 +20,16 @@ RubyForge project:: http://rubyforge.org/projects/prometheus
|
|
20
20
|
|
21
21
|
== AUTHORS
|
22
22
|
|
23
|
-
* Jens Wille <mailto:jens.wille@
|
23
|
+
* Jens Wille <mailto:jens.wille@gmail.com>
|
24
24
|
|
25
25
|
|
26
26
|
== LICENSE AND COPYRIGHT
|
27
27
|
|
28
|
-
Copyright (C) 2007-
|
28
|
+
Copyright (C) 2007-2012 University of Cologne,
|
29
29
|
Albertus-Magnus-Platz, 50923 Cologne, Germany
|
30
30
|
|
31
|
+
Copyright (C) 2013 Jens Wille
|
32
|
+
|
31
33
|
flattendb is free software: you can redistribute it and/or modify it under
|
32
34
|
the terms of the GNU Affero General Public License as published by the Free
|
33
35
|
Software Foundation, either version 3 of the License, or (at your option)
|
data/Rakefile
CHANGED
@@ -13,8 +13,8 @@ begin
|
|
13
13
|
:version => FlattenDB::VERSION,
|
14
14
|
:summary => %q{Flatten relational databases.},
|
15
15
|
:author => %q{Jens Wille},
|
16
|
-
:email => %q{jens.wille@
|
17
|
-
:dependencies => %w[libxml-ruby
|
16
|
+
:email => %q{jens.wille@gmail.com},
|
17
|
+
:dependencies => %w[builder highline libxml-ruby] << ['ruby-nuggets', '>= 0.9.1']
|
18
18
|
}
|
19
19
|
}}
|
20
20
|
rescue LoadError => err
|
data/bin/flattendb
CHANGED
@@ -5,12 +5,14 @@
|
|
5
5
|
# #
|
6
6
|
# flattendb -- Flatten relational databases #
|
7
7
|
# #
|
8
|
-
# Copyright (C) 2007-
|
8
|
+
# Copyright (C) 2007-2012 University of Cologne, #
|
9
9
|
# Albertus-Magnus-Platz, #
|
10
10
|
# 50923 Cologne, Germany #
|
11
11
|
# #
|
12
|
+
# Copyright (C) 2013 Jens Wille #
|
13
|
+
# #
|
12
14
|
# Authors: #
|
13
|
-
# Jens Wille <jens.wille@
|
15
|
+
# Jens Wille <jens.wille@gmail.com> #
|
14
16
|
# #
|
15
17
|
# flattendb is free software; you can redistribute it and/or modify it under #
|
16
18
|
# the terms of the GNU Affero General Public License as published by the Free #
|
data/example/mysql-sample.sql
CHANGED
@@ -9,6 +9,8 @@
|
|
9
9
|
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
10
10
|
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
11
11
|
|
12
|
+
USE `ndr`;
|
13
|
+
|
12
14
|
DROP TABLE IF EXISTS `object`;
|
13
15
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
14
16
|
/*!40101 SET character_set_client = utf8 */;
|
data/lib/flattendb/base.rb
CHANGED
@@ -3,12 +3,14 @@
|
|
3
3
|
# #
|
4
4
|
# A component of flattendb, the relational database flattener. #
|
5
5
|
# #
|
6
|
-
# Copyright (C) 2007-
|
6
|
+
# Copyright (C) 2007-2012 University of Cologne, #
|
7
7
|
# Albertus-Magnus-Platz, #
|
8
8
|
# 50923 Cologne, Germany #
|
9
9
|
# #
|
10
|
+
# Copyright (C) 2013 Jens Wille #
|
11
|
+
# #
|
10
12
|
# Authors: #
|
11
|
-
# Jens Wille <jens.wille@
|
13
|
+
# Jens Wille <jens.wille@gmail.com> #
|
12
14
|
# #
|
13
15
|
# flattendb is free software; you can redistribute it and/or modify it under #
|
14
16
|
# the terms of the GNU Affero General Public License as published by the Free #
|
data/lib/flattendb/cli.rb
CHANGED
@@ -3,12 +3,14 @@
|
|
3
3
|
# #
|
4
4
|
# A component of flattendb, the relational database flattener. #
|
5
5
|
# #
|
6
|
-
# Copyright (C) 2007-
|
6
|
+
# Copyright (C) 2007-2012 University of Cologne, #
|
7
7
|
# Albertus-Magnus-Platz, #
|
8
8
|
# 50923 Cologne, Germany #
|
9
9
|
# #
|
10
|
+
# Copyright (C) 2013 Jens Wille #
|
11
|
+
# #
|
10
12
|
# Authors: #
|
11
|
-
# Jens Wille <jens.wille@
|
13
|
+
# Jens Wille <jens.wille@gmail.com> #
|
12
14
|
# #
|
13
15
|
# flattendb is free software; you can redistribute it and/or modify it under #
|
14
16
|
# the terms of the GNU Affero General Public License as published by the Free #
|
data/lib/flattendb/types/mdb.rb
CHANGED
@@ -3,12 +3,14 @@
|
|
3
3
|
# #
|
4
4
|
# A component of flattendb, the relational database flattener. #
|
5
5
|
# #
|
6
|
-
# Copyright (C) 2007-
|
6
|
+
# Copyright (C) 2007-2012 University of Cologne, #
|
7
7
|
# Albertus-Magnus-Platz, #
|
8
8
|
# 50923 Cologne, Germany #
|
9
9
|
# #
|
10
|
+
# Copyright (C) 2013 Jens Wille #
|
11
|
+
# #
|
10
12
|
# Authors: #
|
11
|
-
# Jens Wille <jens.wille@
|
13
|
+
# Jens Wille <jens.wille@gmail.com> #
|
12
14
|
# #
|
13
15
|
# flattendb is free software; you can redistribute it and/or modify it under #
|
14
16
|
# the terms of the GNU Affero General Public License as published by the Free #
|
@@ -3,12 +3,14 @@
|
|
3
3
|
# #
|
4
4
|
# A component of flattendb, the relational database flattener. #
|
5
5
|
# #
|
6
|
-
# Copyright (C) 2007-
|
6
|
+
# Copyright (C) 2007-2012 University of Cologne, #
|
7
7
|
# Albertus-Magnus-Platz, #
|
8
8
|
# 50923 Cologne, Germany #
|
9
9
|
# #
|
10
|
+
# Copyright (C) 2013 Jens Wille #
|
11
|
+
# #
|
10
12
|
# Authors: #
|
11
|
-
# Jens Wille <jens.wille@
|
13
|
+
# Jens Wille <jens.wille@gmail.com> #
|
12
14
|
# #
|
13
15
|
# flattendb is free software; you can redistribute it and/or modify it under #
|
14
16
|
# the terms of the GNU Affero General Public License as published by the Free #
|
@@ -27,14 +29,14 @@
|
|
27
29
|
#++
|
28
30
|
|
29
31
|
require 'libxml'
|
30
|
-
require '
|
32
|
+
require 'nuggets/util/mysql'
|
31
33
|
require 'flattendb'
|
32
34
|
|
33
35
|
module FlattenDB
|
34
36
|
|
35
37
|
class MySQL < Base
|
36
38
|
|
37
|
-
JOIN_KEY =
|
39
|
+
JOIN_KEY = :@key
|
38
40
|
|
39
41
|
attr_reader :type, :name, :tables, :builder
|
40
42
|
|
@@ -97,38 +99,23 @@ module FlattenDB
|
|
97
99
|
end
|
98
100
|
|
99
101
|
def parse_sql(tables)
|
100
|
-
|
101
|
-
parser = Athena::Formats::MySQL::SQLParser.new
|
102
|
+
name = nil
|
102
103
|
|
103
|
-
input
|
104
|
-
case
|
105
|
-
when
|
104
|
+
Util::MySQL::Parser.parse(input) { |event, *args|
|
105
|
+
case event
|
106
|
+
when :use
|
106
107
|
raise 'dump file contains more than one database' if name
|
107
|
-
name =
|
108
|
-
when
|
109
|
-
table =
|
110
|
-
when /\A\s+`(.+?)`/i
|
111
|
-
columns[table] << $1 if table
|
112
|
-
when /\A\).*;\Z/
|
113
|
-
table = nil
|
114
|
-
when /\AINSERT\s+INTO\s+`(.+?)`\s+(?:\((.+?)\)\s+)?VALUES\s*(.*);\Z/i
|
115
|
-
_table, _columns, _values = $1, $2, $3
|
116
|
-
|
117
|
-
_columns = _columns.nil? ? columns[_table] :
|
118
|
-
_columns.split(/\s*,\s*/).each { |column| column.delete!('`') }
|
119
|
-
|
120
|
-
next if _columns.empty?
|
121
|
-
|
122
|
-
parser.parse(_values) { |row|
|
123
|
-
fields = {}
|
124
|
-
|
125
|
-
row.each_with_index { |value, index|
|
126
|
-
column = _columns[index] or next
|
127
|
-
fields[column] = value.to_s
|
128
|
-
}
|
108
|
+
name = args.first
|
109
|
+
when :insert
|
110
|
+
fields, _, table, columns, values = {}, *args
|
129
111
|
|
130
|
-
|
112
|
+
values.each_with_index { |value, index|
|
113
|
+
if column = columns[index]
|
114
|
+
fields[column] = value.to_s
|
115
|
+
end
|
131
116
|
}
|
117
|
+
|
118
|
+
(tables[table] ||= []) << fields
|
132
119
|
end
|
133
120
|
}
|
134
121
|
|
@@ -143,7 +130,7 @@ module FlattenDB
|
|
143
130
|
when Array
|
144
131
|
inject_foreign(tables, primary_table, foreign_table, *spec)
|
145
132
|
when Hash
|
146
|
-
raise ArgumentError, "invalid join table spec,
|
133
|
+
raise ArgumentError, "invalid join table spec, #{JOIN_KEY.inspect} missing" unless spec.has_key?(JOIN_KEY)
|
147
134
|
|
148
135
|
join_key_spec = spec.delete(JOIN_KEY)
|
149
136
|
|
@@ -160,9 +147,7 @@ module FlattenDB
|
|
160
147
|
end
|
161
148
|
} if config
|
162
149
|
|
163
|
-
tables.delete_if { |table, _|
|
164
|
-
table != primary_table
|
165
|
-
}
|
150
|
+
tables.delete_if { |table, _| table != primary_table }
|
166
151
|
end
|
167
152
|
|
168
153
|
def inject_foreign(tables, primary_table, foreign_table, local_key, foreign_key = local_key, foreign_tables = tables, foreign_table_name = foreign_table)
|
@@ -200,7 +185,7 @@ module FlattenDB
|
|
200
185
|
|
201
186
|
def field_to_xml(field, content, builder)
|
202
187
|
case content
|
203
|
-
when String
|
188
|
+
when String, Numeric, true, false, nil
|
204
189
|
builder.tag!(column_to_element(field), content)
|
205
190
|
when Array
|
206
191
|
content.each { |item|
|
data/lib/flattendb/version.rb
CHANGED
data/lib/flattendb.rb
CHANGED
@@ -3,12 +3,14 @@
|
|
3
3
|
# #
|
4
4
|
# flattendb -- Flatten relational databases #
|
5
5
|
# #
|
6
|
-
# Copyright (C) 2007-
|
6
|
+
# Copyright (C) 2007-2012 University of Cologne, #
|
7
7
|
# Albertus-Magnus-Platz, #
|
8
8
|
# 50923 Cologne, Germany #
|
9
9
|
# #
|
10
|
+
# Copyright (C) 2013 Jens Wille #
|
11
|
+
# #
|
10
12
|
# Authors: #
|
11
|
-
# Jens Wille <jens.wille@
|
13
|
+
# Jens Wille <jens.wille@gmail.com> #
|
12
14
|
# #
|
13
15
|
# flattendb is free software; you can redistribute it and/or modify it under #
|
14
16
|
# the terms of the GNU Affero General Public License as published by the Free #
|
metadata
CHANGED
@@ -1,152 +1,130 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: flattendb
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 3
|
10
|
-
version: 0.1.3
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Jens Wille
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
21
|
-
name: libxml-ruby
|
22
|
-
prerelease: false
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
-
none: false
|
25
|
-
requirements:
|
26
|
-
- - ">="
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
hash: 3
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
version: "0"
|
32
|
-
type: :runtime
|
33
|
-
version_requirements: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2013-03-12 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
35
14
|
name: builder
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
36
21
|
prerelease: false
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: highline
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
46
34
|
type: :runtime
|
47
|
-
version_requirements: *id002
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: ruby-nuggets
|
50
35
|
prerelease: false
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: libxml-ruby
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
62
48
|
type: :runtime
|
63
|
-
version_requirements: *id003
|
64
|
-
- !ruby/object:Gem::Dependency
|
65
|
-
name: athena
|
66
49
|
prerelease: false
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: ruby-nuggets
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.9.1
|
78
62
|
type: :runtime
|
79
|
-
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.9.1
|
80
69
|
description: Flatten relational databases.
|
81
|
-
email: jens.wille@
|
82
|
-
executables:
|
70
|
+
email: jens.wille@gmail.com
|
71
|
+
executables:
|
83
72
|
- flattendb
|
84
73
|
- flattendb.mdb
|
85
74
|
- flattendb.mysql
|
86
75
|
extensions: []
|
87
|
-
|
88
|
-
extra_rdoc_files:
|
76
|
+
extra_rdoc_files:
|
89
77
|
- README
|
90
78
|
- COPYING
|
91
79
|
- ChangeLog
|
92
|
-
files:
|
80
|
+
files:
|
93
81
|
- lib/flattendb.rb
|
94
|
-
- lib/flattendb/cli.rb
|
95
|
-
- lib/flattendb/version.rb
|
96
82
|
- lib/flattendb/base.rb
|
97
|
-
- lib/flattendb/
|
83
|
+
- lib/flattendb/cli.rb
|
98
84
|
- lib/flattendb/types/mdb.rb
|
85
|
+
- lib/flattendb/types/mysql.rb
|
86
|
+
- lib/flattendb/version.rb
|
99
87
|
- bin/flattendb
|
100
88
|
- bin/flattendb.mdb
|
101
89
|
- bin/flattendb.mysql
|
102
|
-
-
|
90
|
+
- COPYING
|
103
91
|
- ChangeLog
|
92
|
+
- README
|
104
93
|
- Rakefile
|
105
|
-
- COPYING
|
106
|
-
- example/mysql-sample.flat.xml
|
107
94
|
- example/mysql-sample.flat-sql.xml
|
108
|
-
- example/mysql-
|
109
|
-
- example/mysql-sample.xml
|
95
|
+
- example/mysql-sample.flat.xml
|
110
96
|
- example/mysql-sample.sql
|
97
|
+
- example/mysql-sample.xml
|
98
|
+
- example/mysql-sample2flat.yaml
|
111
99
|
homepage: http://prometheus.rubyforge.org/flattendb
|
112
100
|
licenses: []
|
113
|
-
|
101
|
+
metadata: {}
|
114
102
|
post_install_message:
|
115
|
-
rdoc_options:
|
116
|
-
- --main
|
117
|
-
- README
|
118
|
-
- --all
|
103
|
+
rdoc_options:
|
119
104
|
- --charset
|
120
105
|
- UTF-8
|
121
|
-
- --title
|
122
|
-
- flattendb Application documentation (v0.1.3)
|
123
106
|
- --line-numbers
|
124
|
-
|
107
|
+
- --all
|
108
|
+
- --title
|
109
|
+
- flattendb Application documentation (v0.2.0)
|
110
|
+
- --main
|
111
|
+
- README
|
112
|
+
require_paths:
|
125
113
|
- lib
|
126
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
none: false
|
137
|
-
requirements:
|
138
|
-
- - ">="
|
139
|
-
- !ruby/object:Gem::Version
|
140
|
-
hash: 3
|
141
|
-
segments:
|
142
|
-
- 0
|
143
|
-
version: "0"
|
114
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - '>='
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - '>='
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
144
124
|
requirements: []
|
145
|
-
|
146
125
|
rubyforge_project: prometheus
|
147
|
-
rubygems_version:
|
126
|
+
rubygems_version: 2.0.3
|
148
127
|
signing_key:
|
149
|
-
specification_version:
|
128
|
+
specification_version: 4
|
150
129
|
summary: Flatten relational databases.
|
151
130
|
test_files: []
|
152
|
-
|