sqldump 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|