csv2sql 0.3.1 → 0.3.070927135848
Sign up to get free protection for your applications and to get access to all the features.
- data/{README.txt → README} +0 -0
- data/lib/csv2sql.rb +11 -25
- metadata +38 -58
- data/History.txt +0 -4
- data/Manifest.txt +0 -9
- data/Rakefile +0 -31
data/{README.txt → README}
RENAMED
File without changes
|
data/lib/csv2sql.rb
CHANGED
@@ -28,11 +28,9 @@ require 'pathname'
|
|
28
28
|
#
|
29
29
|
class Csv2sql
|
30
30
|
|
31
|
-
VERSION = '0.3.1'
|
32
|
-
|
33
31
|
@@defaults = {
|
34
|
-
:before
|
35
|
-
:after
|
32
|
+
:before => "", # can be changed to "start transaction;\n"
|
33
|
+
:after => ";\n" # can be changes to "commit;\n"
|
36
34
|
}
|
37
35
|
|
38
36
|
def self.default_value_filter(v, i=nil, j=nil)
|
@@ -107,10 +105,8 @@ class Csv2sql
|
|
107
105
|
# :row_format
|
108
106
|
# :row_glue
|
109
107
|
# :after
|
110
|
-
# :when_empty
|
111
108
|
#
|
112
109
|
def to_any(args={})
|
113
|
-
args[:when_empty] ||= ""
|
114
110
|
args[:values_glue] ||= ", "
|
115
111
|
args[:row_format] ||= "%s"
|
116
112
|
args[:row_glue] ||= "\n"
|
@@ -126,14 +122,10 @@ class Csv2sql
|
|
126
122
|
r << args[:row_format].call(values) # LOOK OUT: args[:values_glue] ignored
|
127
123
|
end
|
128
124
|
end
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
r
|
134
|
-
else
|
135
|
-
args[:when_empty]
|
136
|
-
end
|
125
|
+
r = r.join args[:row_glue]
|
126
|
+
r = args[:before] + r if args[:before]
|
127
|
+
r = r + args[:after] if args[:after]
|
128
|
+
r
|
137
129
|
end
|
138
130
|
|
139
131
|
# Parse file
|
@@ -143,16 +135,10 @@ class Csv2sql
|
|
143
135
|
#
|
144
136
|
def parse(args={})
|
145
137
|
args[:value_filter] ||= Csv2sql.method :default_value_filter
|
146
|
-
|
147
|
-
last_offset = offset = 0
|
148
|
-
i = 0
|
149
|
-
begin
|
150
|
-
values = []
|
151
|
-
last_offset = offset
|
152
|
-
parsed_cells, offset = CSV.parse_row(data, offset, values)
|
153
|
-
# TODO: ignore blank lines? what about single column csv files with blank values?
|
138
|
+
CSV.open(@filename, 'r').each_with_index do |values, i|
|
154
139
|
values = args[:values_filter].call(values, i) if args[:values_filter]
|
155
140
|
if values
|
141
|
+
|
156
142
|
if args[:value_filter] # LOOK OUT! value_filter is for single value, values_filter is for whole row
|
157
143
|
j = -1
|
158
144
|
values = values.map do |value|
|
@@ -160,11 +146,11 @@ class Csv2sql
|
|
160
146
|
args[:value_filter].call(value, i, j)
|
161
147
|
end
|
162
148
|
end
|
149
|
+
|
163
150
|
yield values if values
|
151
|
+
|
164
152
|
end
|
165
|
-
|
166
|
-
end while parsed_cells > 0
|
167
|
-
#raise "Illegal format error in #{@filename} at row starting with the line #{i} (last offset #{offset} not the same as the data size #{data.size})" if offset != data.size
|
153
|
+
end
|
168
154
|
end
|
169
155
|
|
170
156
|
end
|
metadata
CHANGED
@@ -1,72 +1,52 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.9.2
|
3
|
+
specification_version: 1
|
2
4
|
name: csv2sql
|
3
5
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
6
|
+
version: 0.3.070927135848
|
7
|
+
date: 2007-09-27 00:00:00 +01:00
|
8
|
+
summary: Csv2sql provides an easy way to convert comma separated files to sql
|
9
|
+
require_paths:
|
10
|
+
- lib
|
11
|
+
email: ruby@mirekrusin.com
|
12
|
+
homepage: http://mirekrusin.com/ruby/csv2sql
|
13
|
+
rubyforge_project:
|
14
|
+
description:
|
15
|
+
autorequire: csv2sql
|
16
|
+
default_executable:
|
17
|
+
bindir: bin
|
18
|
+
has_rdoc: true
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
24
|
+
version:
|
5
25
|
platform: ruby
|
26
|
+
signing_key:
|
27
|
+
cert_chain:
|
28
|
+
post_install_message:
|
6
29
|
authors:
|
7
30
|
- Mirek Rusin
|
8
|
-
autorequire:
|
9
|
-
bindir: bin
|
10
|
-
cert_chain: []
|
11
|
-
|
12
|
-
date: 2008-07-07 00:00:00 +01:00
|
13
|
-
default_executable:
|
14
|
-
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
16
|
-
name: hoe
|
17
|
-
version_requirement:
|
18
|
-
version_requirements: !ruby/object:Gem::Requirement
|
19
|
-
requirements:
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 1.6.0
|
23
|
-
version:
|
24
|
-
description: Csv2sql provides an easy way to convert comma separated files to sql
|
25
|
-
email: ruby@mirekrusin.com
|
26
|
-
executables: []
|
27
|
-
|
28
|
-
extensions: []
|
29
|
-
|
30
|
-
extra_rdoc_files:
|
31
|
-
- History.txt
|
32
|
-
- Manifest.txt
|
33
|
-
- README.txt
|
34
31
|
files:
|
35
|
-
-
|
36
|
-
- Manifest.txt
|
37
|
-
- README.txt
|
38
|
-
- Rakefile
|
39
|
-
- lib/csv2sql.rb
|
32
|
+
- tests/files
|
40
33
|
- tests/files/gmclient.csv
|
41
34
|
- tests/files/multilinecells.csv
|
42
35
|
- tests/instant.rb
|
43
36
|
- tests/test.rb
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
version: "0"
|
57
|
-
version:
|
58
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
|
-
requirements:
|
60
|
-
- - ">="
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: "0"
|
63
|
-
version:
|
37
|
+
- lib/csv2sql.rb
|
38
|
+
- README
|
39
|
+
test_files: []
|
40
|
+
|
41
|
+
rdoc_options: []
|
42
|
+
|
43
|
+
extra_rdoc_files:
|
44
|
+
- README
|
45
|
+
executables: []
|
46
|
+
|
47
|
+
extensions: []
|
48
|
+
|
64
49
|
requirements: []
|
65
50
|
|
66
|
-
|
67
|
-
rubygems_version: 1.0.1
|
68
|
-
signing_key:
|
69
|
-
specification_version: 2
|
70
|
-
summary: Csv2sql provides an easy way to convert comma separated files to sql
|
71
|
-
test_files: []
|
51
|
+
dependencies: []
|
72
52
|
|
data/History.txt
DELETED
data/Manifest.txt
DELETED
data/Rakefile
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
|
2
|
-
require 'rubygems'
|
3
|
-
require 'hoe'
|
4
|
-
|
5
|
-
$:.unshift(File.dirname(__FILE__) + "/lib")
|
6
|
-
require 'csv2sql'
|
7
|
-
|
8
|
-
RUBYFORGE_PROJECT = 'csv2sql'
|
9
|
-
|
10
|
-
Hoe.new('Csv2sql', Csv2sql::VERSION) do |p|
|
11
|
-
p.name = RUBYFORGE_PROJECT
|
12
|
-
p.author = "Mirek Rusin"
|
13
|
-
p.email = 'ruby@mirekrusin.com'
|
14
|
-
p.summary = "Csv2sql provides an easy way to convert comma separated files to sql"
|
15
|
-
p.description = "Csv2sql provides an easy way to convert comma separated files to sql"
|
16
|
-
p.url = "http://rubyforge.com/projects/#{RUBYFORGE_PROJECT}"
|
17
|
-
p.clean_globs = ['test/actual'] # Remove this directory on "rake clean"
|
18
|
-
p.remote_rdoc_dir = '' # Release to root
|
19
|
-
p.changes = p.paragraphs_of('CHANGELOG', 0..1).join("\n\n")
|
20
|
-
#p.rsync_args << ' --exclude=statsvn/'
|
21
|
-
# * extra_deps - An array of rubygem dependencies.
|
22
|
-
end
|
23
|
-
|
24
|
-
desc 'Publish RDoc to RubyForge via pscp'
|
25
|
-
task :publish_docs_via_pscp => [:clean, :docs] do
|
26
|
-
config = YAML.load(File.read(File.expand_path("~/.rubyforge/user-config.yml")))
|
27
|
-
sh %{pscp -r doc/* #{config["username"]}@rubyforge.org:/var/www/gforge-projects/#{RUBYFORGE_PROJECT}/}
|
28
|
-
end
|
29
|
-
|
30
|
-
desc "Release and publish documentation"
|
31
|
-
task :default => [:release, :publish_docs_via_pscp]
|