csv2psql 0.0.0 → 0.0.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8e12654e5d07f5a1bb2baa44120d701c52dc5570
4
- data.tar.gz: 37b7f1d82a61a667b971e2c2f0d5c1bc135b1c13
3
+ metadata.gz: c7cf1fee8ae3b9863f3e0fc1c34353d93289f167
4
+ data.tar.gz: c2679fdf68f83282630724958b6345b658b5d5c0
5
5
  SHA512:
6
- metadata.gz: 67522c3b720cab1215142f0ea1a9e34cd94ade8b20efab614d6fc0c30aecf3bcdd106a85f73bff830444e4b541d5af40a1f1f5d2d6f697a00115492f0f50115b
7
- data.tar.gz: 9c34f3fe26c109bcca0a7212be2e8e6aa5cdbda0cf6d0af94a69fcdbd9607b37474bed10e59ab19bb53da96ac6162276e5f2e5f024e5c7bc22c03f9abd454144
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 for insert or update into DB
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
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Csv2Psql module
4
4
  module Csv2Psql
5
- VERSION = '0.0.0'
5
+ VERSION = '0.0.1'
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: csv2psql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomas Korcak