csv-import-analyzer 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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