csv-import-analyzer 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.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -0
  3. data/.rspec +3 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +35 -0
  7. data/Rakefile +2 -0
  8. data/csv-import-analyzer.gemspec +29 -0
  9. data/lib/csv-import-analyzer.rb +18 -0
  10. data/lib/csv-import-analyzer/analyzer/csv_check_bounds.rb +104 -0
  11. data/lib/csv-import-analyzer/analyzer/delimiter_identifier.rb +66 -0
  12. data/lib/csv-import-analyzer/analyzer/file_type_assertion.rb +29 -0
  13. data/lib/csv-import-analyzer/csv_datatype_analysis.rb +110 -0
  14. data/lib/csv-import-analyzer/csv_sanitizer.rb +86 -0
  15. data/lib/csv-import-analyzer/export/metadata_analysis.rb +156 -0
  16. data/lib/csv-import-analyzer/helpers/common_functions.rb +11 -0
  17. data/lib/csv-import-analyzer/helpers/datatype_validation.rb +85 -0
  18. data/lib/csv-import-analyzer/helpers/errors.rb +3 -0
  19. data/lib/csv-import-analyzer/helpers/string_class_extensions.rb +8 -0
  20. data/lib/csv-import-analyzer/query_builder/mysql_query_helper.rb +31 -0
  21. data/lib/csv-import-analyzer/query_builder/pg_query_helper.rb +27 -0
  22. data/lib/csv-import-analyzer/query_builder/query_helper.rb +27 -0
  23. data/lib/csv-import-analyzer/sampleTab.csv +5 -0
  24. data/lib/csv-import-analyzer/sql_query_builder.rb +125 -0
  25. data/lib/csv-import-analyzer/version.rb +5 -0
  26. data/lib/metadata_output.json +70 -0
  27. data/lib/sampleTab.csv +5 -0
  28. data/spec/csv-import-analyzer/analyzer/csv_check_bounds_spec.rb +43 -0
  29. data/spec/csv-import-analyzer/analyzer/delimiter_identifier_spec.rb +61 -0
  30. data/spec/csv-import-analyzer/analyzer/file_type_assertion_spec.rb +0 -0
  31. data/spec/csv-import-analyzer/csv_datatype_analysis_spec.rb +1 -0
  32. data/spec/csv-import-analyzer/csv_sanitizer_spec.rb +24 -0
  33. data/spec/csv-import-analyzer/export/metadata_analysis_spec.rb +0 -0
  34. data/spec/csv-import-analyzer/helpers/common_functions_spec.rb +31 -0
  35. data/spec/csv-import-analyzer/helpers/csv_check_bounds_spec.rb +3 -0
  36. data/spec/csv-import-analyzer/helpers/datatype_validation_spec.rb +75 -0
  37. data/spec/csv-import-analyzer/helpers/mysql_query_helper_spec.rb +0 -0
  38. data/spec/csv-import-analyzer/helpers/pq_query_helper_spec.rb +0 -0
  39. data/spec/csv-import-analyzer/helpers/string_class_extension_spec.rb +18 -0
  40. data/spec/csv-import-analyzer/query_builder/mysql_query_helper_spec.rb +54 -0
  41. data/spec/csv-import-analyzer/query_builder/pg_query_helper_spec.rb +55 -0
  42. data/spec/csv-import-analyzer_spec.rb +14 -0
  43. data/spec/fixtures/sample.csv +5 -0
  44. data/spec/fixtures/sample_options.yml +11 -0
  45. data/spec/fixtures/semicolon-sample.csv +5 -0
  46. data/spec/spec_helper.rb +84 -0
  47. metadata +208 -0
@@ -0,0 +1,18 @@
1
+ # require 'spec_helper'
2
+
3
+ describe 'substr_count' do
4
+ context 'different possible delimiters' do
5
+ it 'returns count of commas as delimiter in a string' do
6
+ expect("hello, hi, how, are you?".substr_count(",")).to eq(3)
7
+ end
8
+ it 'returns count of semi-colons as delimiter in a string' do
9
+ expect("hello; hi, how, are you?".substr_count(";")).to eq(1)
10
+ end
11
+ it 'returns count of pipe as delimiter in a string' do
12
+ expect("hello, hi| how| are you?".substr_count("|")).to eq(2)
13
+ end
14
+ it 'returns count of tab as delimiter in a string' do
15
+ expect("hello\thi\thow| are you?".substr_count("\t")).to eq(2)
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,54 @@
1
+ # require 'spec_helper'
2
+ class DummyClass
3
+ end
4
+ describe '#form_query_for_datatype' do
5
+ before(:each) do
6
+ @dummy_class = DummyClass.new
7
+ @dummy_class.extend(CsvImportAnalyzer::MysqlQueryHelper)
8
+ end
9
+ context 'expected arguments are not set' do
10
+ let(:args) {Hash[:header => :test]}
11
+ let(:args1) {Hash[:datatype, :test]}
12
+ it ' returns missing arguments error' do
13
+ expect(@dummy_class.form_query_for_datatype(args)).to be_instance_of(MissingRequiredArguments)
14
+ end
15
+ it 'returns invalid if set to nil' do
16
+ expect(@dummy_class.form_query_for_datatype(args1)).to be_instance_of(MissingRequiredArguments)
17
+ end
18
+ end
19
+
20
+ context 'expected arguments are set' do
21
+ let(:args) {Hash[:header => :test, :datatype => :string]}
22
+ let(:args1) {Hash[:header => :test, :datatype => :integer]}
23
+ it 'returns expected sql query for string' do
24
+ expect(@dummy_class.form_query_for_datatype(args)).to eq("test varchar(255)")
25
+ end
26
+ it 'returns expected sql query for numeric' do
27
+ expect(@dummy_class.form_query_for_datatype(args1)).to eq("test integer")
28
+ end
29
+ end
30
+
31
+ end
32
+ describe '#import_csv' do
33
+ before(:each) do
34
+ @dummy_class = DummyClass.new
35
+ @dummy_class.extend(CsvImportAnalyzer::MysqlQueryHelper)
36
+ end
37
+ context 'expected arguments are not set' do
38
+ let(:args) {Hash[:tablename => "test", :delimiter => ","]}
39
+ let(:args1) {Hash[:filename => "test"]}
40
+ it ' return SqlQueryErrror' do
41
+ expect(@dummy_class.import_csv(args)).to be_instance_of(MissingRequiredArguments)
42
+ end
43
+ it 'should return SqlQueryErrror' do
44
+ expect(@dummy_class.import_csv(args1)).to be_instance_of(MissingRequiredArguments)
45
+ end
46
+ end
47
+
48
+ context 'expected arguments are set' do
49
+ let(:args) {Hash[:tablename => "test", :delimiter => ",", :filename => "sample.csv"]}
50
+ it 'returns expected import query' do
51
+ expect(@dummy_class.import_csv(args)).to eq("LOAD DATA INFILE sample.csv INTO TABLE test FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\\n' IGNORE 1 LINES;")
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,55 @@
1
+ # require 'spec_helper'
2
+ class DummyClass
3
+ end
4
+ describe '#form_query_for_datatype' do
5
+ before(:each) do
6
+ @dummy_class = DummyClass.new
7
+ @dummy_class.extend(CsvImportAnalyzer::PgQueryHelper)
8
+ end
9
+ context 'expected arguments are not set' do
10
+ let(:args) {Hash[:header => :test]}
11
+ let(:args1) {Hash[:datatype, :test]}
12
+ it ' returns missing arguments error' do
13
+ expect(@dummy_class.form_query_for_datatype(args)).to be_instance_of(MissingRequiredArguments)
14
+ end
15
+ it 'returns invalid if set to nil' do
16
+ expect(@dummy_class.form_query_for_datatype(args1)).to be_instance_of(MissingRequiredArguments)
17
+ end
18
+ end
19
+
20
+ context 'expected arguments are set' do
21
+ let(:args) {Hash[:header => :test, :datatype => :string]}
22
+ let(:args1) {Hash[:header => :test, :datatype => :integer]}
23
+ it 'returns expected sql query for string' do
24
+ expect(@dummy_class.form_query_for_datatype(args)).to eq("test varchar(255)")
25
+ end
26
+ it 'returns expected sql query for numeric' do
27
+ expect(@dummy_class.form_query_for_datatype(args1)).to eq("test integer")
28
+ end
29
+ end
30
+
31
+ end
32
+ describe '#import_csv' do
33
+ before(:each) do
34
+ @dummy_class = DummyClass.new
35
+ @dummy_class.extend(CsvImportAnalyzer::PgQueryHelper)
36
+ end
37
+ context 'expected arguments are not set' do
38
+ let(:args) {Hash[:tablename => "test", :delimiter => ","]}
39
+ let(:args1) {Hash[:filename => "test"]}
40
+ it ' return SqlQueryErrror' do
41
+ expect(@dummy_class.import_csv(args)).to be_instance_of(MissingRequiredArguments)
42
+ end
43
+ it 'should return SqlQueryErrror' do
44
+ expect(@dummy_class.import_csv(args1)).to be_instance_of(MissingRequiredArguments)
45
+ end
46
+ end
47
+
48
+ context 'expected arguments are set' do
49
+ let(:args) {Hash[:tablename => "test", :delimiter => ",", :filename => "filename"]}
50
+ it 'returns expected import query' do
51
+ expect(@dummy_class.import_csv(args)).to eq("COPY test FROM 'filename' HEADER DELIMITER ',' CSV NULL AS 'NULL';")
52
+ end
53
+ end
54
+
55
+ end
@@ -0,0 +1,14 @@
1
+ # require 'spec_helper'
2
+
3
+ # CsvImportAnalyzer.process("sampleTab.csv", {:metadata_output => true})
4
+
5
+
6
+ describe CsvImportAnalyzer do
7
+ include CsvImportAnalyzer
8
+ it 'should return invalid file as file not found' do
9
+ expect(CsvImportAnalyzer.process("sample.csv")).to be_instance_of(FileNotFound)
10
+ end
11
+ it 'should be able to process a valid file' do
12
+ expect(CsvImportAnalyzer.process($sample_csv_path)).not_to be_instance_of(FileNotFound)
13
+ end
14
+ end
@@ -0,0 +1,5 @@
1
+ Year ID,Make ID,Model ID,Description ID,Price ID
2
+ 1997,Ford,,"ac, abs, moon","3000"
3
+ 1999,Chevy,"Venture ""Extended Edition""","",4900.00
4
+ 1999,'Chevy',"Venture ""Extended Edition, Very Large""",,5000.00
5
+ 1996,Jeep,Grand Che'rokee,"MUST SELL!air, moon roof, loaded",4799.00
@@ -0,0 +1,11 @@
1
+ preferences:
2
+ metadata_output: nil
3
+ processed_input: nil
4
+ unique: 10
5
+ check_bounds: true
6
+ datatype_analysis: 200
7
+ chunk: 20
8
+ database: [pg, mysql]
9
+ quote_convert: true
10
+ replace_nulls: true
11
+ out_format: :json
@@ -0,0 +1,5 @@
1
+ Year ID;Make ID;Model ID;Description ID;Price ID
2
+ 1997;Ford;;"ac, abs; moon";"3000"
3
+ 1999;Chevy;"Venture ""Extended Edition""";"";4900.00
4
+ 1999;'Chevy';"Venture ""Extended Edition; Very Large""";;5000.00
5
+ 1996;Jeep;Grand Che'rokee;"MUST SELL!air; moon roof; loaded";4799.00
@@ -0,0 +1,84 @@
1
+ require 'simplecov'
2
+ SimpleCov.start
3
+ require 'csv-import-analyzer'
4
+ $sample_csv_path = "/home/avinash/Desktop/csv-import-analyzer/spec/fixtures/sample.csv"
5
+ $sample_ssv_path = "/home/avinash/Desktop/csv-import-analyzer/spec/fixtures/semicolon-sample.csv"
6
+
7
+ # This file was generated by the `rspec --init` command. Conventionally, all
8
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
9
+ # The generated `.rspec` file contains `--require spec_helper` which will cause this
10
+ # file to always be loaded, without a need to explicitly require it in any files.
11
+ #
12
+ # Given that it is always loaded, you are encouraged to keep this file as
13
+ # light-weight as possible. Requiring heavyweight dependencies from this file
14
+ # will add to the boot time of your test suite on EVERY test run, even for an
15
+ # individual file that may not need all of that loaded. Instead, make a
16
+ # separate helper file that requires this one and then use it only in the specs
17
+ # that actually need it.
18
+ #
19
+ # The `.rspec` file also contains a few flags that are not defaults but that
20
+ # users commonly want.
21
+ #
22
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
23
+ RSpec.configure do |config|
24
+ # The settings below are suggested to provide a good initial experience
25
+ # with RSpec, but feel free to customize to your heart's content.
26
+ =begin
27
+ # These two settings work together to allow you to limit a spec run
28
+ # to individual examples or groups you care about by tagging them with
29
+ # `:focus` metadata. When nothing is tagged with `:focus`, all examples
30
+ # get run.
31
+ config.filter_run :focus
32
+ config.run_all_when_everything_filtered = true
33
+
34
+ # Many RSpec users commonly either run the entire suite or an individual
35
+ # file, and it's useful to allow more verbose output when running an
36
+ # individual spec file.
37
+ if config.files_to_run.one?
38
+ # Use the documentation formatter for detailed output,
39
+ # unless a formatter has already been configured
40
+ # (e.g. via a command-line flag).
41
+ config.default_formatter = 'doc'
42
+ end
43
+
44
+ # Print the 10 slowest examples and example groups at the
45
+ # end of the spec run, to help surface which specs are running
46
+ # particularly slow.
47
+ config.profile_examples = 10
48
+
49
+ # Run specs in random order to surface order dependencies. If you find an
50
+ # order dependency and want to debug it, you can fix the order by providing
51
+ # the seed, which is printed after each run.
52
+ # --seed 1234
53
+ config.order = :random
54
+
55
+ # Seed global randomization in this process using the `--seed` CLI option.
56
+ # Setting this allows you to use `--seed` to deterministically reproduce
57
+ # test failures related to randomization by passing the same `--seed` value
58
+ # as the one that triggered the failure.
59
+ Kernel.srand config.seed
60
+
61
+ # rspec-expectations config goes here. You can use an alternate
62
+ # assertion/expectation library such as wrong or the stdlib/minitest
63
+ # assertions if you prefer.
64
+ config.expect_with :rspec do |expectations|
65
+ # Enable only the newer, non-monkey-patching expect syntax.
66
+ # For more details, see:
67
+ # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
68
+ expectations.syntax = :expect
69
+ end
70
+
71
+ # rspec-mocks config goes here. You can use an alternate test double
72
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
73
+ config.mock_with :rspec do |mocks|
74
+ # Enable only the newer, non-monkey-patching expect syntax.
75
+ # For more details, see:
76
+ # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
77
+ mocks.syntax = :expect
78
+
79
+ # Prevents you from mocking or stubbing a method that does not exist on
80
+ # a real object. This is generally recommended.
81
+ mocks.verify_partial_doubles = true
82
+ end
83
+ =end
84
+ end
metadata ADDED
@@ -0,0 +1,208 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: csv-import-analyzer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - avinash vallabhaneni
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-09-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.10'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.10'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.9'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.9'
83
+ - !ruby/object:Gem::Dependency
84
+ name: smarter_csv
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.0.17
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.0.17
97
+ - !ruby/object:Gem::Dependency
98
+ name: roo
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.13'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.13'
111
+ description: Santize large csv files and help in predicting datatypes including min
112
+ max values for easy import to SQL
113
+ email:
114
+ - avinash.vallab@gmail.com
115
+ executables: []
116
+ extensions: []
117
+ extra_rdoc_files: []
118
+ files:
119
+ - ".gitignore"
120
+ - ".rspec"
121
+ - Gemfile
122
+ - LICENSE.txt
123
+ - README.md
124
+ - Rakefile
125
+ - csv-import-analyzer.gemspec
126
+ - lib/csv-import-analyzer.rb
127
+ - lib/csv-import-analyzer/analyzer/csv_check_bounds.rb
128
+ - lib/csv-import-analyzer/analyzer/delimiter_identifier.rb
129
+ - lib/csv-import-analyzer/analyzer/file_type_assertion.rb
130
+ - lib/csv-import-analyzer/csv_datatype_analysis.rb
131
+ - lib/csv-import-analyzer/csv_sanitizer.rb
132
+ - lib/csv-import-analyzer/export/metadata_analysis.rb
133
+ - lib/csv-import-analyzer/helpers/common_functions.rb
134
+ - lib/csv-import-analyzer/helpers/datatype_validation.rb
135
+ - lib/csv-import-analyzer/helpers/errors.rb
136
+ - lib/csv-import-analyzer/helpers/string_class_extensions.rb
137
+ - lib/csv-import-analyzer/query_builder/mysql_query_helper.rb
138
+ - lib/csv-import-analyzer/query_builder/pg_query_helper.rb
139
+ - lib/csv-import-analyzer/query_builder/query_helper.rb
140
+ - lib/csv-import-analyzer/sampleTab.csv
141
+ - lib/csv-import-analyzer/sql_query_builder.rb
142
+ - lib/csv-import-analyzer/version.rb
143
+ - lib/metadata_output.json
144
+ - lib/sampleTab.csv
145
+ - spec/csv-import-analyzer/analyzer/csv_check_bounds_spec.rb
146
+ - spec/csv-import-analyzer/analyzer/delimiter_identifier_spec.rb
147
+ - spec/csv-import-analyzer/analyzer/file_type_assertion_spec.rb
148
+ - spec/csv-import-analyzer/csv_datatype_analysis_spec.rb
149
+ - spec/csv-import-analyzer/csv_sanitizer_spec.rb
150
+ - spec/csv-import-analyzer/export/metadata_analysis_spec.rb
151
+ - spec/csv-import-analyzer/helpers/common_functions_spec.rb
152
+ - spec/csv-import-analyzer/helpers/csv_check_bounds_spec.rb
153
+ - spec/csv-import-analyzer/helpers/datatype_validation_spec.rb
154
+ - spec/csv-import-analyzer/helpers/mysql_query_helper_spec.rb
155
+ - spec/csv-import-analyzer/helpers/pq_query_helper_spec.rb
156
+ - spec/csv-import-analyzer/helpers/string_class_extension_spec.rb
157
+ - spec/csv-import-analyzer/query_builder/mysql_query_helper_spec.rb
158
+ - spec/csv-import-analyzer/query_builder/pg_query_helper_spec.rb
159
+ - spec/csv-import-analyzer_spec.rb
160
+ - spec/fixtures/sample.csv
161
+ - spec/fixtures/sample_options.yml
162
+ - spec/fixtures/semicolon-sample.csv
163
+ - spec/spec_helper.rb
164
+ homepage: http://rubygems.org/gems/csv-import-analyzer
165
+ licenses:
166
+ - MIT
167
+ metadata: {}
168
+ post_install_message:
169
+ rdoc_options: []
170
+ require_paths:
171
+ - lib
172
+ required_ruby_version: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - ">="
175
+ - !ruby/object:Gem::Version
176
+ version: '0'
177
+ required_rubygems_version: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ requirements: []
183
+ rubyforge_project:
184
+ rubygems_version: 2.2.2
185
+ signing_key:
186
+ specification_version: 4
187
+ summary: To process large csv files and predict valid datatypes of each column for
188
+ easy import into SQL
189
+ test_files:
190
+ - spec/csv-import-analyzer/analyzer/csv_check_bounds_spec.rb
191
+ - spec/csv-import-analyzer/analyzer/delimiter_identifier_spec.rb
192
+ - spec/csv-import-analyzer/analyzer/file_type_assertion_spec.rb
193
+ - spec/csv-import-analyzer/csv_datatype_analysis_spec.rb
194
+ - spec/csv-import-analyzer/csv_sanitizer_spec.rb
195
+ - spec/csv-import-analyzer/export/metadata_analysis_spec.rb
196
+ - spec/csv-import-analyzer/helpers/common_functions_spec.rb
197
+ - spec/csv-import-analyzer/helpers/csv_check_bounds_spec.rb
198
+ - spec/csv-import-analyzer/helpers/datatype_validation_spec.rb
199
+ - spec/csv-import-analyzer/helpers/mysql_query_helper_spec.rb
200
+ - spec/csv-import-analyzer/helpers/pq_query_helper_spec.rb
201
+ - spec/csv-import-analyzer/helpers/string_class_extension_spec.rb
202
+ - spec/csv-import-analyzer/query_builder/mysql_query_helper_spec.rb
203
+ - spec/csv-import-analyzer/query_builder/pg_query_helper_spec.rb
204
+ - spec/csv-import-analyzer_spec.rb
205
+ - spec/fixtures/sample.csv
206
+ - spec/fixtures/sample_options.yml
207
+ - spec/fixtures/semicolon-sample.csv
208
+ - spec/spec_helper.rb