sqldump 0.0.1 → 0.0.2
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/CHANGELOG +10 -0
- data/Guardfile +6 -0
- data/README.md +15 -7
- data/Rakefile +10 -0
- data/features/database_types.feature +1 -1
- data/features/support/env.rb +8 -9
- data/lib/sqldump/connector.rb +13 -2
- data/lib/sqldump/options.rb +7 -0
- data/lib/sqldump/version.rb +1 -1
- data/spec/sqldump/connector_spec.rb +18 -2
- data/spec/sqldump/insert_formatter_spec.rb +4 -0
- data/spec/sqldump/options_spec.rb +6 -0
- data/sqldump.gemspec +2 -0
- metadata +38 -16
data/CHANGELOG
CHANGED
data/Guardfile
CHANGED
@@ -4,3 +4,9 @@ guard 'rspec' do
|
|
4
4
|
watch(%r{^lib/(.+)/(.+)\.rb$}) { |m| "spec/#{m[1]}/#{m[2]}_spec.rb" }
|
5
5
|
watch('spec/spec_helper.rb') { "spec" }
|
6
6
|
end
|
7
|
+
|
8
|
+
guard 'cucumber' do
|
9
|
+
watch(%r{^features/.+\.feature$})
|
10
|
+
watch(%r{^features/support/.+$}) { 'features' }
|
11
|
+
watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
|
12
|
+
end
|
data/README.md
CHANGED
@@ -10,7 +10,11 @@ Just install the gem with
|
|
10
10
|
$ gem install sqldump
|
11
11
|
```
|
12
12
|
|
13
|
-
This will make the executable `sqldump` available from your command line.
|
13
|
+
This will make the executable `sqldump` available from your command line. SQLite3 is a direct dependency and is installed if you don't already have it. Other drivers must be installed manually. E.g.
|
14
|
+
|
15
|
+
```bash
|
16
|
+
$ gem install pg
|
17
|
+
```
|
14
18
|
|
15
19
|
**Requires Ruby 1.9.2 or later.**
|
16
20
|
|
@@ -49,12 +53,14 @@ This gem is created by Mats Sigge and is under the MIT License.
|
|
49
53
|
## Roadmap
|
50
54
|
|
51
55
|
###Immediate goals
|
52
|
-
*
|
53
|
-
*
|
54
|
-
*
|
55
|
-
*
|
56
|
-
*
|
57
|
-
*
|
56
|
+
* Selecting only some columns.
|
57
|
+
* Support for UPDATEs.
|
58
|
+
* Pretty-printing SQL.
|
59
|
+
* Suppressing NULL columns in output.
|
60
|
+
* Handling auto-incrementing columns, e.g. nextval('sequence_name') in PostgreSQL.
|
61
|
+
* ODBC driver to enable SQL Server.
|
62
|
+
* Ability to specify custom connection string parameters (or entire connection string).
|
63
|
+
* If possible, detecting if the specified DBD driver is installed, to give a better error message.
|
58
64
|
|
59
65
|
###Longer-term goals / pipe dreams
|
60
66
|
* Configuration system, e.g. .sqldump file
|
@@ -66,6 +72,8 @@ This gem is created by Mats Sigge and is under the MIT License.
|
|
66
72
|
* Initial support for dumping INSERTs
|
67
73
|
* Support for SQLite3
|
68
74
|
* Support for PostgreSQL
|
75
|
+
* Support for MySQL
|
76
|
+
|
69
77
|
|
70
78
|
## History
|
71
79
|
|
data/Rakefile
CHANGED
@@ -19,7 +19,7 @@ Feature: dump data from different database types (e.g. MySQL, PostgreSQL, SQLite
|
|
19
19
|
| 17 |
|
20
20
|
| 42 |
|
21
21
|
| 4711 |
|
22
|
-
When I run `sqldump -T postgresql -d numbers -S localhost -U
|
22
|
+
When I run `sqldump -T postgresql -d numbers -S localhost -U sqldump -P sqldump numbers`
|
23
23
|
Then it should pass with:
|
24
24
|
"""
|
25
25
|
17
|
data/features/support/env.rb
CHANGED
@@ -15,13 +15,12 @@ def drop_database_if_exists(driver, host, database, username, password)
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def get_driver_string(driver)
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
driver_string
|
18
|
+
case driver
|
19
|
+
when :sqlite3
|
20
|
+
"SQLite3"
|
21
|
+
when :postgresql
|
22
|
+
"Pg"
|
23
|
+
end
|
25
24
|
end
|
26
25
|
|
27
26
|
def create_and_connect_to_database(driver, host, database, username, password, &block)
|
@@ -48,8 +47,8 @@ def create_database(driver, host, database, username, password)
|
|
48
47
|
end
|
49
48
|
|
50
49
|
def create_dummy_database_with_data(driver, host, database, table_name, table_data)
|
51
|
-
username = '
|
52
|
-
password =
|
50
|
+
username = 'sqldump'
|
51
|
+
password = 'sqldump'
|
53
52
|
|
54
53
|
in_current_dir do
|
55
54
|
drop_database_if_exists(driver, host, database, username, password)
|
data/lib/sqldump/connector.rb
CHANGED
@@ -20,9 +20,12 @@ module Sqldump
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def get_url
|
23
|
-
database = @options.database
|
24
23
|
driver = get_driver
|
25
|
-
"DBI:#{driver}:#{database}"
|
24
|
+
url = "DBI:#{driver}:#{@options.database}"
|
25
|
+
if use_host
|
26
|
+
url += ":#{@options.host}"
|
27
|
+
end
|
28
|
+
url
|
26
29
|
end
|
27
30
|
|
28
31
|
def get_driver
|
@@ -31,9 +34,17 @@ module Sqldump
|
|
31
34
|
"SQLite3"
|
32
35
|
when :postgresql
|
33
36
|
"Pg"
|
37
|
+
when :mysql
|
38
|
+
"Mysql"
|
39
|
+
else
|
40
|
+
raise "Unknown database type " + @options.database_type
|
34
41
|
end
|
35
42
|
end
|
36
43
|
|
44
|
+
def use_host
|
45
|
+
@options.database_type != :sqlite3
|
46
|
+
end
|
47
|
+
|
37
48
|
def get_user
|
38
49
|
@options.username
|
39
50
|
end
|
data/lib/sqldump/options.rb
CHANGED
@@ -4,6 +4,8 @@ module Sqldump
|
|
4
4
|
|
5
5
|
class Options
|
6
6
|
|
7
|
+
SUPPORTED_DATABASES = ['postgresql', 'mysql', 'sqlite3']
|
8
|
+
|
7
9
|
attr_accessor :database
|
8
10
|
attr_accessor :host
|
9
11
|
attr_accessor :username
|
@@ -70,7 +72,12 @@ module Sqldump
|
|
70
72
|
end
|
71
73
|
|
72
74
|
opts.on('-T', '--dbtype TYPE', 'Specify the type of database to connect to. Supported types are sqlite3, postgresql/pg.') do |type|
|
75
|
+
type.downcase!
|
73
76
|
type = 'postgresql' if type == 'pg'
|
77
|
+
unless SUPPORTED_DATABASES.include?(type)
|
78
|
+
puts "Unsupported database type #{type}"
|
79
|
+
exit
|
80
|
+
end
|
74
81
|
self.database_type = type.to_sym
|
75
82
|
end
|
76
83
|
|
data/lib/sqldump/version.rb
CHANGED
@@ -7,8 +7,9 @@ module Sqldump
|
|
7
7
|
|
8
8
|
before(:each) do
|
9
9
|
@options = double('options')
|
10
|
-
@options.stub(:database).and_return('database')
|
11
10
|
@options.stub(:database_type).and_return(:sqlite3)
|
11
|
+
@options.stub(:database).and_return('database')
|
12
|
+
@options.stub(:host).and_return('localhost')
|
12
13
|
@options.stub(:username).and_return(nil)
|
13
14
|
@options.stub(:password).and_return(nil)
|
14
15
|
end
|
@@ -40,7 +41,22 @@ module Sqldump
|
|
40
41
|
@options.stub(:database_type).and_return(:postgresql)
|
41
42
|
|
42
43
|
connector = Connector.new(@options)
|
43
|
-
connector.get_url.should == 'DBI:Pg:numbers'
|
44
|
+
connector.get_url.should == 'DBI:Pg:numbers:localhost'
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'uses the Mysql driver when mysql is specified' do
|
48
|
+
@options.stub(:database).and_return('numbers')
|
49
|
+
@options.stub(:database_type).and_return(:mysql)
|
50
|
+
|
51
|
+
connector = Connector.new(@options)
|
52
|
+
connector.get_url.should == 'DBI:Mysql:numbers:localhost'
|
53
|
+
end
|
54
|
+
|
55
|
+
it "doesn't include the host for SQLite3" do
|
56
|
+
@options.stub(:database).and_return('numbers')
|
57
|
+
|
58
|
+
connector = Connector.new(@options)
|
59
|
+
connector.get_url.should == 'DBI:SQLite3:numbers'
|
44
60
|
end
|
45
61
|
end
|
46
62
|
|
@@ -54,6 +54,12 @@ module Sqldump
|
|
54
54
|
options = make_options(%w(-T pg))
|
55
55
|
options.database_type.should == :postgresql
|
56
56
|
end
|
57
|
+
|
58
|
+
it 'sets the type to mysql if specified' do
|
59
|
+
options = make_options(%w(-T mysql))
|
60
|
+
options.database_type.should == :mysql
|
61
|
+
end
|
62
|
+
|
57
63
|
end
|
58
64
|
|
59
65
|
describe 'username' do
|
data/sqldump.gemspec
CHANGED
@@ -23,7 +23,9 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.add_dependency "dbd-sqlite3"
|
24
24
|
s.add_development_dependency "rspec"
|
25
25
|
s.add_development_dependency "cucumber"
|
26
|
+
s.add_development_dependency "aruba"
|
26
27
|
s.add_development_dependency "guard-rspec"
|
28
|
+
s.add_development_dependency "guard-cucumber"
|
27
29
|
s.add_development_dependency "rb-fsevent" if RUBY_PLATFORM =~ /darwin/i
|
28
30
|
s.add_development_dependency "dbd-pg"
|
29
31
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sqldump
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
12
|
+
date: 2012-02-06 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: dbi
|
16
|
-
requirement: &
|
16
|
+
requirement: &2152906260 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2152906260
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: dbd-sqlite3
|
27
|
-
requirement: &
|
27
|
+
requirement: &2152905460 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2152905460
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &2152897840 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2152897840
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: cucumber
|
49
|
-
requirement: &
|
49
|
+
requirement: &2152896120 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,32 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2152896120
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: aruba
|
60
|
+
requirement: &2152895320 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *2152895320
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: guard-rspec
|
60
|
-
requirement: &
|
71
|
+
requirement: &2152894720 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *2152894720
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: guard-cucumber
|
82
|
+
requirement: &2152893780 !ruby/object:Gem::Requirement
|
61
83
|
none: false
|
62
84
|
requirements:
|
63
85
|
- - ! '>='
|
@@ -65,10 +87,10 @@ dependencies:
|
|
65
87
|
version: '0'
|
66
88
|
type: :development
|
67
89
|
prerelease: false
|
68
|
-
version_requirements: *
|
90
|
+
version_requirements: *2152893780
|
69
91
|
- !ruby/object:Gem::Dependency
|
70
92
|
name: rb-fsevent
|
71
|
-
requirement: &
|
93
|
+
requirement: &2152892500 !ruby/object:Gem::Requirement
|
72
94
|
none: false
|
73
95
|
requirements:
|
74
96
|
- - ! '>='
|
@@ -76,10 +98,10 @@ dependencies:
|
|
76
98
|
version: '0'
|
77
99
|
type: :development
|
78
100
|
prerelease: false
|
79
|
-
version_requirements: *
|
101
|
+
version_requirements: *2152892500
|
80
102
|
- !ruby/object:Gem::Dependency
|
81
103
|
name: dbd-pg
|
82
|
-
requirement: &
|
104
|
+
requirement: &2152890760 !ruby/object:Gem::Requirement
|
83
105
|
none: false
|
84
106
|
requirements:
|
85
107
|
- - ! '>='
|
@@ -87,7 +109,7 @@ dependencies:
|
|
87
109
|
version: '0'
|
88
110
|
type: :development
|
89
111
|
prerelease: false
|
90
|
-
version_requirements: *
|
112
|
+
version_requirements: *2152890760
|
91
113
|
description: A command line tool to generate SQL insert or update statements from
|
92
114
|
the data in a database.
|
93
115
|
email:
|