csv2psql 0.0.0 → 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/lib/csv2psql/cli/cmd/convert_cmd.rb +1 -1
- data/lib/csv2psql/convert/convert.rb +35 -0
- data/lib/csv2psql/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7cf1fee8ae3b9863f3e0fc1c34353d93289f167
|
4
|
+
data.tar.gz: c2679fdf68f83282630724958b6345b658b5d5c0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9893af6b95b14d28fb61b270585a028e00d7c176f5e3d0e1b77a9c5059f6aa70ae37f9f7522803811a3f1115f7bdbc913e4c35fe5441a51cdacabefcba11ce72
|
7
|
+
data.tar.gz: a6598639b04050e381a759a099187a1c69f10ab87487cb58fb5dcc29ca1e3d3261000131bd58450f54b9af41df60eb46a92075917c313f7021209519ff2e57d6
|
data/README.md
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
# csv2psql
|
2
2
|
|
3
|
-
Tool for transforming CSV into SQL statements
|
3
|
+
Tool for transforming CSV into SQL statements
|
4
4
|
|
5
5
|
## Status
|
6
6
|
|
7
7
|
[![Gem Version](https://badge.fury.io/rb/csv2psql.svg)](http://badge.fury.io/rb/csv2psql)
|
8
|
+
[![Downloads](http://img.shields.io/gem/dt/csv2psql.svg)](http://rubygems.org/gems/csv2psql)
|
8
9
|
[![Build Status](https://travis-ci.org/korczis/csv2psql.svg?branch=master)](https://travis-ci.org/korczis/csv2psql)
|
9
10
|
[![Code Climate](https://codeclimate.com/github/korczis/csv2psql/badges/gpa.svg)](https://codeclimate.com/github/korczis/csv2psql)
|
10
11
|
[![Dependency Status](https://gemnasium.com/korczis/csv2psql.svg)](https://gemnasium.com/korczis/csv2psql)
|
@@ -9,7 +9,7 @@ require_relative '../../convert/convert'
|
|
9
9
|
|
10
10
|
desc 'Convert csv file'
|
11
11
|
command :convert do |c|
|
12
|
-
c.switch [:h, :header], desc: 'Header row included'
|
12
|
+
c.switch [:h, :header], desc: 'Header row included', default_value: true
|
13
13
|
c.flag [:d, :delimiter], type: String, default_value: ','
|
14
14
|
|
15
15
|
c.action do |global_options, options, args|
|
@@ -10,11 +10,46 @@ require_relative '../version'
|
|
10
10
|
module Csv2Psql
|
11
11
|
# Csv2Psql convert module
|
12
12
|
module Convert
|
13
|
+
DEFAULT_OPTIONS = {
|
14
|
+
delimiter: ',',
|
15
|
+
header: true
|
16
|
+
}
|
17
|
+
|
13
18
|
class << self
|
19
|
+
def format_row(row)
|
20
|
+
headers = row.headers.map do |h|
|
21
|
+
h.downcase.gsub(/\./, '_')
|
22
|
+
end
|
23
|
+
|
24
|
+
values = row.headers.map do |h|
|
25
|
+
"'#{row[h]}'"
|
26
|
+
end
|
27
|
+
|
28
|
+
"INSERT INTO aaa(#{headers.join(', ')}) VALUES(#{values.join(', ')});"
|
29
|
+
end
|
30
|
+
|
14
31
|
def convert(paths, opts = {})
|
15
32
|
paths = [paths] unless paths.is_a?(Array)
|
16
33
|
paths.each do |path|
|
17
34
|
puts "Converting #{path}"
|
35
|
+
|
36
|
+
header = !opts[:header].nil? ? opts[:header] : DEFAULT_OPTIONS[:header]
|
37
|
+
csv_opts = {
|
38
|
+
col_sep: opts[:delimiter] || DEFAULT_OPTIONS[:delimiter],
|
39
|
+
:headers => header
|
40
|
+
}
|
41
|
+
|
42
|
+
CSV.open(path, 'rt', csv_opts) do |csv|
|
43
|
+
csv.each do |row|
|
44
|
+
puts format_row(row)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def sanitize_header(header)
|
51
|
+
header.map do |h|
|
52
|
+
h.downcase
|
18
53
|
end
|
19
54
|
end
|
20
55
|
end
|
data/lib/csv2psql/version.rb
CHANGED