idata 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/bin/iload +24 -3
- data/lib/idata/version.rb +1 -1
- metadata +103 -79
- checksums.yaml +0 -7
data/bin/iload
CHANGED
@@ -17,6 +17,15 @@ require 'fileutils'
|
|
17
17
|
SUPPORTED_INPUT_FORMATS = ['CSV', 'FX']
|
18
18
|
POSTGRESQL_PORT = 5432
|
19
19
|
CSV_DEFAULT_DELIMITER = ','
|
20
|
+
CSV_DEFAULT_QUOTE = '"'
|
21
|
+
|
22
|
+
PG_TAB = "E'\t'"
|
23
|
+
PG_BACKSPACE = "E'\b'"
|
24
|
+
|
25
|
+
PG_CHAR_MAP = {
|
26
|
+
"\t" => PG_TAB,
|
27
|
+
"\b" => PG_BACKSPACE
|
28
|
+
}
|
20
29
|
|
21
30
|
$options = {}
|
22
31
|
parser = OptionParser.new("", 24) do |opts|
|
@@ -34,6 +43,10 @@ parser = OptionParser.new("", 24) do |opts|
|
|
34
43
|
$options[:delim] = v
|
35
44
|
end
|
36
45
|
|
46
|
+
opts.on("--quote QUOTE", "Default to '\"'") do |v|
|
47
|
+
$options[:quote] = v
|
48
|
+
end
|
49
|
+
|
37
50
|
# opts.on("-o", "--output CSV", "Temporary CSV output file") do |v|
|
38
51
|
# $options[:output] = v
|
39
52
|
# end
|
@@ -141,7 +154,8 @@ end
|
|
141
154
|
# Default value
|
142
155
|
$options[:listen] ||= POSTGRESQL_PORT
|
143
156
|
$options[:delim] ||= CSV_DEFAULT_DELIMITER
|
144
|
-
$options[:
|
157
|
+
$options[:quote] ||= CSV_DEFAULT_QUOTE
|
158
|
+
|
145
159
|
$tmpfile = "/tmp/#{Digest::SHA1.hexdigest(rand(100000).to_s)}.csv"
|
146
160
|
|
147
161
|
# Database dump
|
@@ -233,9 +247,16 @@ class MyParser
|
|
233
247
|
query(create_table_sql)
|
234
248
|
|
235
249
|
# Dump data
|
236
|
-
pg_tab = "E'\t'" if $options[:delim] == "\t"
|
250
|
+
#pg_tab = "E'\t'" if $options[:delim] == "\t"
|
251
|
+
|
252
|
+
tab = PG_CHAR_MAP[$options[:delim]]
|
253
|
+
tab ||= "'#{$options[:delim]}'"
|
254
|
+
|
255
|
+
quote = PG_CHAR_MAP[$options[:quote]]
|
256
|
+
quote = "'#{$options[:quote]}'"
|
257
|
+
|
237
258
|
insert_data_sql = headers.map{|e| "\"#{e}\""}.join(",")
|
238
|
-
insert_data_sql = "COPY #{$options[:table]}( #{insert_data_sql} ) FROM '#{csv_path}' DELIMITER #{
|
259
|
+
insert_data_sql = "COPY #{$options[:table]}( #{insert_data_sql} ) FROM '#{csv_path}' DELIMITER #{tab} CSV HEADER QUOTE #{quote};"
|
239
260
|
|
240
261
|
# Change output file permission so that postgres user can read it
|
241
262
|
begin
|
data/lib/idata/version.rb
CHANGED
metadata
CHANGED
@@ -1,75 +1,86 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: idata
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
5
11
|
platform: ruby
|
6
|
-
authors:
|
12
|
+
authors:
|
7
13
|
- Nghi Pham
|
8
14
|
autorequire:
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
17
|
+
|
18
|
+
date: 2014-04-21 00:00:00 +07:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
14
22
|
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - '>='
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.3'
|
20
|
-
type: :development
|
21
23
|
prerelease: false
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0.9'
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 9
|
30
|
+
segments:
|
31
|
+
- 1
|
32
|
+
- 3
|
33
|
+
version: "1.3"
|
34
34
|
type: :development
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rake
|
35
38
|
prerelease: false
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 25
|
45
|
+
segments:
|
46
|
+
- 0
|
47
|
+
- 9
|
48
|
+
version: "0.9"
|
49
|
+
type: :development
|
50
|
+
version_requirements: *id002
|
51
|
+
- !ruby/object:Gem::Dependency
|
42
52
|
name: rails
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - '>='
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '4.0'
|
48
|
-
type: :runtime
|
49
53
|
prerelease: false
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
54
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
hash: 27
|
60
|
+
segments:
|
61
|
+
- 4
|
62
|
+
- 0
|
63
|
+
version: "4.0"
|
62
64
|
type: :runtime
|
65
|
+
version_requirements: *id003
|
66
|
+
- !ruby/object:Gem::Dependency
|
67
|
+
name: pg
|
63
68
|
prerelease: false
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
70
|
+
none: false
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
hash: 3
|
75
|
+
segments:
|
76
|
+
- 0
|
77
|
+
version: "0"
|
78
|
+
type: :runtime
|
79
|
+
version_requirements: *id004
|
69
80
|
description: Tools for importing data from raw files
|
70
|
-
email:
|
81
|
+
email:
|
71
82
|
- minhnghivn@gmail.com
|
72
|
-
executables:
|
83
|
+
executables:
|
73
84
|
- iload
|
74
85
|
- ieval
|
75
86
|
- ipatch
|
@@ -77,44 +88,57 @@ executables:
|
|
77
88
|
- iexport
|
78
89
|
- isanitize
|
79
90
|
extensions: []
|
91
|
+
|
80
92
|
extra_rdoc_files: []
|
81
|
-
|
93
|
+
|
94
|
+
files:
|
82
95
|
- .gitignore
|
83
96
|
- Gemfile
|
84
97
|
- LICENSE.txt
|
85
98
|
- README.md
|
86
99
|
- Rakefile
|
87
|
-
- bin/ieval
|
88
|
-
- bin/iexport
|
89
|
-
- bin/iload
|
90
|
-
- bin/ipatch
|
91
|
-
- bin/isanitize
|
92
|
-
- bin/ivalidate
|
93
100
|
- idata.gemspec
|
94
101
|
- lib/idata.rb
|
95
102
|
- lib/idata/version.rb
|
96
|
-
|
97
|
-
|
103
|
+
- bin/iload
|
104
|
+
- bin/ieval
|
105
|
+
- bin/ipatch
|
106
|
+
- bin/ivalidate
|
107
|
+
- bin/iexport
|
108
|
+
- bin/isanitize
|
109
|
+
has_rdoc: true
|
110
|
+
homepage: ""
|
111
|
+
licenses:
|
98
112
|
- MIT
|
99
|
-
metadata: {}
|
100
113
|
post_install_message:
|
101
114
|
rdoc_options: []
|
102
|
-
|
115
|
+
|
116
|
+
require_paths:
|
103
117
|
- lib
|
104
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
118
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
119
|
+
none: false
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
hash: 3
|
124
|
+
segments:
|
125
|
+
- 0
|
126
|
+
version: "0"
|
127
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
|
+
none: false
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
hash: 3
|
133
|
+
segments:
|
134
|
+
- 0
|
135
|
+
version: "0"
|
114
136
|
requirements: []
|
137
|
+
|
115
138
|
rubyforge_project:
|
116
|
-
rubygems_version:
|
139
|
+
rubygems_version: 1.3.7
|
117
140
|
signing_key:
|
118
|
-
specification_version:
|
141
|
+
specification_version: 3
|
119
142
|
summary: Tools for importing data from raw files
|
120
143
|
test_files: []
|
144
|
+
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 27e594b49b95b536a5d01ed6f90155751104ec1a
|
4
|
-
data.tar.gz: a4e52832bccdc2ab55ae33e7e6f659857b800991
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: f55f15be3fbc959bcfacdb68f2b45e5b97fa560ee953890a66eb5a4715366019240e61c1b9ef36df9ed77d0ba396d6e38b32177a555d75aeb4f0deb04ae99757
|
7
|
-
data.tar.gz: 0e8061590a8d5da84ee9f74d137c2f6d022a58009d9d56ca965241c10e064a9cde59fb1f0d784cab643d88d19c1cdbe3a2f688ce2bbfcc42f4cd50b14e2bcfda
|