sql-server-raw-file 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +64 -38
- data/README.md +12 -7
- data/data/current_sql_index +1 -0
- data/{fixtures/select-fixture-data-SQL_Server10_11.sql → data/select-fixture-data-SQL_Server10_11_12.sql} +0 -0
- data/{fixtures → data}/select-fixture-data-SQL_Server_9.sql +0 -0
- data/{fixtures → data}/sql09.raw +0 -0
- data/{fixtures → data}/sql09_data.csv +0 -0
- data/{fixtures → data}/sql09_header.json +0 -0
- data/{fixtures → data}/sql10.raw +0 -0
- data/{fixtures → data}/sql10_data.csv +0 -0
- data/{fixtures → data}/sql10_header.json +0 -0
- data/{fixtures → data}/sql11.raw +0 -0
- data/{fixtures → data}/sql11_data.csv +0 -0
- data/{fixtures → data}/sql11_header.json +0 -0
- data/data/sql12.raw +0 -0
- data/data/sql12_data.csv +3 -0
- data/data/sql12_header.json +340 -0
- data/fixtures/fixture_sql_data_and_header.rb +69 -0
- data/lib/sql_server_raw_file.rb +3 -3
- data/lib/{sql_server_dts_ns.rb → version.rb} +1 -1
- data/sql-server-raw-file.gemspec +3 -4
- data/test/test_sql_data_and_header.rb +5 -61
- metadata +20 -16
- data/fixtures/current_sql_index +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f0a2b45b85ef848488ef5c95351eb47908fef50b
|
4
|
+
data.tar.gz: a50f828eef6cfbbc284bdb0f01777c6be14cfd48
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c36e367bdaf32e80d4c50cdc54c6baf4880a53b9a4c31d75eed57db74017109ab4f910fe36294da3303a6c218cfefffb96a775ec5b068f87c99e940583309d5d
|
7
|
+
data.tar.gz: 1018b0c785ed7cb6ab454a311f111a7cce7b973fbab572a1c475d4c5ce7d39d46d5c1420df79ded488db6baf7b22d1e3a326f540086214d8db3ed36b1651d971
|
data/CHANGELOG.md
CHANGED
@@ -1,61 +1,87 @@
|
|
1
|
+
## 0.1.3 (Jun 3, 2016)
|
2
|
+
|
3
|
+
Features:
|
4
|
+
|
5
|
+
- add Fixture module
|
6
|
+
- add fixture data directory
|
7
|
+
- add SQL Server 12 raw file support
|
8
|
+
|
9
|
+
Bugfixes:
|
10
|
+
|
11
|
+
- check test_sql_data_and_header.rb
|
12
|
+
|
13
|
+
|
1
14
|
## 0.1.2 (Jan 25, 2016)
|
2
15
|
|
3
16
|
Features:
|
4
17
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
+
- add SqlServerDts::RawFile#get_len
|
19
|
+
|
20
|
+
* get length of data by data or metadata
|
21
|
+
|
22
|
+
- add support of data types
|
23
|
+
|
24
|
+
* smallint
|
25
|
+
* real (float(24))
|
26
|
+
* money (decimal(19,4)), smallmoney ((decimal(10,4)))
|
27
|
+
* tinyint
|
28
|
+
* uniqueidentifier
|
29
|
+
* varbinary, binary, timestamp
|
30
|
+
* date
|
31
|
+
* smalldatetime
|
32
|
+
* time
|
33
|
+
* datetimeoffset
|
18
34
|
|
19
35
|
Bugfixes:
|
20
36
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
37
|
+
- fixed mappings for:
|
38
|
+
|
39
|
+
* int
|
40
|
+
* float
|
41
|
+
* bigint
|
42
|
+
* datetime
|
43
|
+
* datetime2
|
44
|
+
|
27
45
|
|
28
46
|
## 0.1.1 (Jan 20, 2016)
|
29
47
|
|
30
48
|
Features:
|
31
49
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
50
|
+
- add SqlServerDts::RawFile#eof?
|
51
|
+
|
52
|
+
* check io-stream eof
|
53
|
+
|
54
|
+
- add SqlServerDts::RawFile#pos
|
55
|
+
|
56
|
+
* get current position in inner io-stream object
|
36
57
|
|
37
58
|
Bugfixes:
|
38
59
|
|
39
|
-
|
40
|
-
|
60
|
+
- missing method SqlServerDts::RawFile#close
|
61
|
+
|
62
|
+
* is need to close inner io-stream object in some cases
|
63
|
+
|
41
64
|
|
42
65
|
## 0.0.1 (Jan 5, 2016)
|
43
66
|
|
44
67
|
Features:
|
45
68
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
69
|
+
- add support of SQL Server Dts Raw File versions:
|
70
|
+
|
71
|
+
* 00.90.00.00 => 9 (SQL Server: 9,10)
|
72
|
+
* 00.10.01.00 => 10 (SQL Server: 11)
|
73
|
+
|
74
|
+
- add support of basic data types:
|
75
|
+
|
76
|
+
* int (i.e. NULL w/o cast)
|
77
|
+
* float
|
78
|
+
* bit
|
79
|
+
* bigint
|
80
|
+
* (n)(var)char
|
81
|
+
* decimal, numeric
|
82
|
+
* datetime
|
83
|
+
* datetime2 (only SQL Server 10/11)
|
58
84
|
|
59
85
|
Bugfixes:
|
60
86
|
|
61
|
-
|
87
|
+
- initial release
|
data/README.md
CHANGED
@@ -1,13 +1,19 @@
|
|
1
1
|
# sql-server-raw-file: sql-server-raw-file lib
|
2
2
|
|
3
|
-
Converts SQL Server Integration Services
|
3
|
+
Converts SQL Server Integration Services raw file to hash objects.
|
4
|
+
Supports raw files generated from SQL Server 9, 10, 11, 12.
|
4
5
|
|
5
6
|
### Installation and usage
|
6
7
|
|
8
|
+
Install:
|
9
|
+
|
10
|
+
```
|
11
|
+
gem install sql-server-raw-file
|
7
12
|
```
|
8
|
-
1) gem install sql-server-raw-file
|
9
|
-
2) usage (examples):
|
10
13
|
|
14
|
+
Usage:
|
15
|
+
|
16
|
+
```ruby
|
11
17
|
# begin example 1
|
12
18
|
require 'sql_server_raw_file'
|
13
19
|
|
@@ -42,11 +48,10 @@ SqlServerDts::RawFile.new('/path/to/sql/raw/file') { |raw_obj, raw_io|
|
|
42
48
|
# ...
|
43
49
|
}
|
44
50
|
# end example 2
|
45
|
-
|
46
|
-
3) more detailed examples in ./test/test_sql_data_and_header.rb
|
47
51
|
```
|
48
52
|
|
53
|
+
More detailed examples in ./fixtures/fixture_sql_data_and_header.rb
|
54
|
+
|
49
55
|
### Troubleshooting
|
50
56
|
|
51
|
-
|
52
|
-
subject: sql-server-raw-file issue
|
57
|
+
Visit to [sql-server-raw-file homepage](https://github.com/dim11981/sql-server-raw-file)
|
@@ -0,0 +1 @@
|
|
1
|
+
4
|
File without changes
|
File without changes
|
data/{fixtures → data}/sql09.raw
RENAMED
File without changes
|
File without changes
|
File without changes
|
data/{fixtures → data}/sql10.raw
RENAMED
File without changes
|
File without changes
|
File without changes
|
data/{fixtures → data}/sql11.raw
RENAMED
File without changes
|
File without changes
|
File without changes
|
data/data/sql12.raw
ADDED
Binary file
|
data/data/sql12_data.csv
ADDED
@@ -0,0 +1,3 @@
|
|
1
|
+
int float bit bigint varchar char nvarchar nchar decimal numeric datetime datetime2 NULL varbinary binary timestamp money smallmoney date time smalldatetime datetimeoffset uniqueidentifier smallint real tinyint
|
2
|
+
1 3.14159265 true 1073741824 This is a variable length char string This is a char string Это строка переменной длины в Юникоде Это строка в Юникоде 9.110000 7.620000 2016-06-03 14:06:27.257 2016-06-03 14:06:27.0000000 30313233343536373839 40414243000000000000 0000000000000fa0 123.4500 2.2300 2016-06-03 14:06:27.0000000 2016-06-03 14:06:00.000 2016-06-03 14:06:27.0000000+03:00 6f9619ff-8b86-d011-b42d-00c04fc964ff 30000 1343542784.0 200
|
3
|
+
-2 -12.333333 false -1162261467 This is another variable length char string This is another char string Это еще одна строка переменной длины в Юникоде Это еще одна строка в Юникоде -99.999000 -5.560000 2016-06-03 14:06:27.257 2016-06-03 14:06:27.2587012 39383736353433323130 43424140000000000000 0000000000000fa0 -123.4500 -2.2300 2016-06-03 14:06:27.2570000 2016-06-03 14:06:00.000 2016-06-03 06:36:27.2587012-04:30 ffefaa09-8b86-d011-b42d-00c04fc964ff -30000 -434046272.0 10
|
@@ -0,0 +1,340 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"name": "int",
|
4
|
+
"data_type": 3,
|
5
|
+
"max_length": 4,
|
6
|
+
"p2": 116,
|
7
|
+
"p3": 12,
|
8
|
+
"p4": -1,
|
9
|
+
"precision": 0,
|
10
|
+
"scale": 0,
|
11
|
+
"code_page": 0,
|
12
|
+
"p8": 0,
|
13
|
+
"p9": 0
|
14
|
+
},
|
15
|
+
{
|
16
|
+
"name": "float",
|
17
|
+
"data_type": 5,
|
18
|
+
"max_length": 8,
|
19
|
+
"p2": 120,
|
20
|
+
"p3": 16,
|
21
|
+
"p4": -1,
|
22
|
+
"precision": 0,
|
23
|
+
"scale": 0,
|
24
|
+
"code_page": 0,
|
25
|
+
"p8": 0,
|
26
|
+
"p9": 0
|
27
|
+
},
|
28
|
+
{
|
29
|
+
"name": "bit",
|
30
|
+
"data_type": 11,
|
31
|
+
"max_length": 2,
|
32
|
+
"p2": 814,
|
33
|
+
"p3": 20,
|
34
|
+
"p4": -1,
|
35
|
+
"precision": 0,
|
36
|
+
"scale": 0,
|
37
|
+
"code_page": 0,
|
38
|
+
"p8": 0,
|
39
|
+
"p9": 0
|
40
|
+
},
|
41
|
+
{
|
42
|
+
"name": "bigint",
|
43
|
+
"data_type": 20,
|
44
|
+
"max_length": 8,
|
45
|
+
"p2": 192,
|
46
|
+
"p3": 24,
|
47
|
+
"p4": -1,
|
48
|
+
"precision": 0,
|
49
|
+
"scale": 0,
|
50
|
+
"code_page": 0,
|
51
|
+
"p8": 0,
|
52
|
+
"p9": 0
|
53
|
+
},
|
54
|
+
{
|
55
|
+
"name": "varchar",
|
56
|
+
"data_type": 129,
|
57
|
+
"max_length": 128,
|
58
|
+
"p2": 228,
|
59
|
+
"p3": 28,
|
60
|
+
"p4": -1,
|
61
|
+
"precision": 0,
|
62
|
+
"scale": 0,
|
63
|
+
"code_page": 1251,
|
64
|
+
"p8": 0,
|
65
|
+
"p9": 0
|
66
|
+
},
|
67
|
+
{
|
68
|
+
"name": "char",
|
69
|
+
"data_type": 129,
|
70
|
+
"max_length": 128,
|
71
|
+
"p2": 388,
|
72
|
+
"p3": 32,
|
73
|
+
"p4": -1,
|
74
|
+
"precision": 0,
|
75
|
+
"scale": 0,
|
76
|
+
"code_page": 1251,
|
77
|
+
"p8": 0,
|
78
|
+
"p9": 0
|
79
|
+
},
|
80
|
+
{
|
81
|
+
"name": "nvarchar",
|
82
|
+
"data_type": 130,
|
83
|
+
"max_length": 128,
|
84
|
+
"p2": 556,
|
85
|
+
"p3": 36,
|
86
|
+
"p4": -1,
|
87
|
+
"precision": 0,
|
88
|
+
"scale": 0,
|
89
|
+
"code_page": 0,
|
90
|
+
"p8": 0,
|
91
|
+
"p9": 0
|
92
|
+
},
|
93
|
+
{
|
94
|
+
"name": "nchar",
|
95
|
+
"data_type": 130,
|
96
|
+
"max_length": 128,
|
97
|
+
"p2": 820,
|
98
|
+
"p3": 40,
|
99
|
+
"p4": -1,
|
100
|
+
"precision": 0,
|
101
|
+
"scale": 0,
|
102
|
+
"code_page": 0,
|
103
|
+
"p8": 0,
|
104
|
+
"p9": 0
|
105
|
+
},
|
106
|
+
{
|
107
|
+
"name": "decimal",
|
108
|
+
"data_type": 131,
|
109
|
+
"max_length": 19,
|
110
|
+
"p2": 357,
|
111
|
+
"p3": 44,
|
112
|
+
"p4": -1,
|
113
|
+
"precision": 18,
|
114
|
+
"scale": 6,
|
115
|
+
"code_page": 0,
|
116
|
+
"p8": 0,
|
117
|
+
"p9": 0
|
118
|
+
},
|
119
|
+
{
|
120
|
+
"name": "numeric",
|
121
|
+
"data_type": 131,
|
122
|
+
"max_length": 19,
|
123
|
+
"p2": 517,
|
124
|
+
"p3": 48,
|
125
|
+
"p4": -1,
|
126
|
+
"precision": 18,
|
127
|
+
"scale": 6,
|
128
|
+
"code_page": 0,
|
129
|
+
"p8": 0,
|
130
|
+
"p9": 0
|
131
|
+
},
|
132
|
+
{
|
133
|
+
"name": "datetime",
|
134
|
+
"data_type": 135,
|
135
|
+
"max_length": 16,
|
136
|
+
"p2": 128,
|
137
|
+
"p3": 52,
|
138
|
+
"p4": -1,
|
139
|
+
"precision": 0,
|
140
|
+
"scale": 0,
|
141
|
+
"code_page": 0,
|
142
|
+
"p8": 0,
|
143
|
+
"p9": 0
|
144
|
+
},
|
145
|
+
{
|
146
|
+
"name": "datetime2",
|
147
|
+
"data_type": 304,
|
148
|
+
"max_length": 16,
|
149
|
+
"p2": 144,
|
150
|
+
"p3": 56,
|
151
|
+
"p4": -1,
|
152
|
+
"precision": 0,
|
153
|
+
"scale": 7,
|
154
|
+
"code_page": 0,
|
155
|
+
"p8": 0,
|
156
|
+
"p9": 0
|
157
|
+
},
|
158
|
+
{
|
159
|
+
"name": "NULL",
|
160
|
+
"data_type": 3,
|
161
|
+
"max_length": 4,
|
162
|
+
"p2": 224,
|
163
|
+
"p3": 60,
|
164
|
+
"p4": -1,
|
165
|
+
"precision": 0,
|
166
|
+
"scale": 0,
|
167
|
+
"code_page": 0,
|
168
|
+
"p8": 0,
|
169
|
+
"p9": 0
|
170
|
+
},
|
171
|
+
{
|
172
|
+
"name": "varbinary",
|
173
|
+
"data_type": 128,
|
174
|
+
"max_length": 10,
|
175
|
+
"p2": 1084,
|
176
|
+
"p3": 64,
|
177
|
+
"p4": 0,
|
178
|
+
"precision": 0,
|
179
|
+
"scale": 0,
|
180
|
+
"code_page": 0,
|
181
|
+
"p8": 0,
|
182
|
+
"p9": 0
|
183
|
+
},
|
184
|
+
{
|
185
|
+
"name": "binary",
|
186
|
+
"data_type": 128,
|
187
|
+
"max_length": 10,
|
188
|
+
"p2": 1096,
|
189
|
+
"p3": 68,
|
190
|
+
"p4": 4,
|
191
|
+
"precision": 0,
|
192
|
+
"scale": 0,
|
193
|
+
"code_page": 0,
|
194
|
+
"p8": 0,
|
195
|
+
"p9": 0
|
196
|
+
},
|
197
|
+
{
|
198
|
+
"name": "timestamp",
|
199
|
+
"data_type": 128,
|
200
|
+
"max_length": 8,
|
201
|
+
"p2": 208,
|
202
|
+
"p3": 72,
|
203
|
+
"p4": 8,
|
204
|
+
"precision": 0,
|
205
|
+
"scale": 0,
|
206
|
+
"code_page": 0,
|
207
|
+
"p8": 0,
|
208
|
+
"p9": 0
|
209
|
+
},
|
210
|
+
{
|
211
|
+
"name": "money",
|
212
|
+
"data_type": 6,
|
213
|
+
"max_length": 8,
|
214
|
+
"p2": 200,
|
215
|
+
"p3": 76,
|
216
|
+
"p4": -1,
|
217
|
+
"precision": 0,
|
218
|
+
"scale": 0,
|
219
|
+
"code_page": 0,
|
220
|
+
"p8": 0,
|
221
|
+
"p9": 0
|
222
|
+
},
|
223
|
+
{
|
224
|
+
"name": "smallmoney",
|
225
|
+
"data_type": 6,
|
226
|
+
"max_length": 8,
|
227
|
+
"p2": 216,
|
228
|
+
"p3": 80,
|
229
|
+
"p4": -1,
|
230
|
+
"precision": 0,
|
231
|
+
"scale": 0,
|
232
|
+
"code_page": 0,
|
233
|
+
"p8": 0,
|
234
|
+
"p9": 0
|
235
|
+
},
|
236
|
+
{
|
237
|
+
"name": "date",
|
238
|
+
"data_type": 133,
|
239
|
+
"max_length": 6,
|
240
|
+
"p2": 1078,
|
241
|
+
"p3": 84,
|
242
|
+
"p4": -1,
|
243
|
+
"precision": 0,
|
244
|
+
"scale": 0,
|
245
|
+
"code_page": 0,
|
246
|
+
"p8": 0,
|
247
|
+
"p9": 0
|
248
|
+
},
|
249
|
+
{
|
250
|
+
"name": "time",
|
251
|
+
"data_type": 145,
|
252
|
+
"max_length": 12,
|
253
|
+
"p2": 376,
|
254
|
+
"p3": 88,
|
255
|
+
"p4": -1,
|
256
|
+
"precision": 0,
|
257
|
+
"scale": 7,
|
258
|
+
"code_page": 0,
|
259
|
+
"p8": 0,
|
260
|
+
"p9": 0
|
261
|
+
},
|
262
|
+
{
|
263
|
+
"name": "smalldatetime",
|
264
|
+
"data_type": 135,
|
265
|
+
"max_length": 16,
|
266
|
+
"p2": 160,
|
267
|
+
"p3": 92,
|
268
|
+
"p4": -1,
|
269
|
+
"precision": 0,
|
270
|
+
"scale": 0,
|
271
|
+
"code_page": 0,
|
272
|
+
"p8": 0,
|
273
|
+
"p9": 0
|
274
|
+
},
|
275
|
+
{
|
276
|
+
"name": "datetimeoffset",
|
277
|
+
"data_type": 146,
|
278
|
+
"max_length": 20,
|
279
|
+
"p2": 536,
|
280
|
+
"p3": 96,
|
281
|
+
"p4": -1,
|
282
|
+
"precision": 0,
|
283
|
+
"scale": 7,
|
284
|
+
"code_page": 0,
|
285
|
+
"p8": 0,
|
286
|
+
"p9": 0
|
287
|
+
},
|
288
|
+
{
|
289
|
+
"name": "uniqueidentifier",
|
290
|
+
"data_type": 72,
|
291
|
+
"max_length": 16,
|
292
|
+
"p2": 176,
|
293
|
+
"p3": 100,
|
294
|
+
"p4": -1,
|
295
|
+
"precision": 0,
|
296
|
+
"scale": 0,
|
297
|
+
"code_page": 0,
|
298
|
+
"p8": 0,
|
299
|
+
"p9": 0
|
300
|
+
},
|
301
|
+
{
|
302
|
+
"name": "smallint",
|
303
|
+
"data_type": 2,
|
304
|
+
"max_length": 2,
|
305
|
+
"p2": 816,
|
306
|
+
"p3": 104,
|
307
|
+
"p4": -1,
|
308
|
+
"precision": 0,
|
309
|
+
"scale": 0,
|
310
|
+
"code_page": 0,
|
311
|
+
"p8": 0,
|
312
|
+
"p9": 0
|
313
|
+
},
|
314
|
+
{
|
315
|
+
"name": "real",
|
316
|
+
"data_type": 4,
|
317
|
+
"max_length": 4,
|
318
|
+
"p2": 1108,
|
319
|
+
"p3": 108,
|
320
|
+
"p4": -1,
|
321
|
+
"precision": 0,
|
322
|
+
"scale": 0,
|
323
|
+
"code_page": 0,
|
324
|
+
"p8": 0,
|
325
|
+
"p9": 0
|
326
|
+
},
|
327
|
+
{
|
328
|
+
"name": "tinyint",
|
329
|
+
"data_type": 17,
|
330
|
+
"max_length": 1,
|
331
|
+
"p2": 1094,
|
332
|
+
"p3": 112,
|
333
|
+
"p4": -1,
|
334
|
+
"precision": 0,
|
335
|
+
"scale": 0,
|
336
|
+
"code_page": 0,
|
337
|
+
"p8": 0,
|
338
|
+
"p9": 0
|
339
|
+
}
|
340
|
+
]
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'csv'
|
4
|
+
require 'json'
|
5
|
+
|
6
|
+
require(File.expand_path('../../lib/sql_server_raw_file.rb',__FILE__))
|
7
|
+
|
8
|
+
# Fixture module
|
9
|
+
# test fixture
|
10
|
+
module Fixture
|
11
|
+
def self.show
|
12
|
+
data_path = File.expand_path('../../data',__FILE__)+'/'
|
13
|
+
raw_file_name = %w(sql09.raw sql10.raw sql11.raw sql12_1.raw sql12_2.raw)
|
14
|
+
|
15
|
+
# current_fixture_index = 0
|
16
|
+
current_fixture_index = File.read(data_path+'/current_sql_index').to_i
|
17
|
+
raw_path = data_path+raw_file_name[current_fixture_index]
|
18
|
+
|
19
|
+
# show version of raw file
|
20
|
+
# signature: new(io)
|
21
|
+
# @param io [IO] IO-stream
|
22
|
+
# @return [SqlServerDts::RawFile]
|
23
|
+
File.open(raw_path) { |raw_io|
|
24
|
+
raw_obj = SqlServerDts::RawFile.new(raw_io)
|
25
|
+
puts "RAW VERSION: #{raw_obj.version}"
|
26
|
+
}
|
27
|
+
|
28
|
+
# show header of raw file and convert it into hash and save it as json-file
|
29
|
+
# signature: new(path)
|
30
|
+
# @param path [String] Path to raw file
|
31
|
+
# @return [SqlServerDts::RawFile]
|
32
|
+
raw_obj = SqlServerDts::RawFile.new(raw_path)
|
33
|
+
puts '=== BEGIN HEADER ==='
|
34
|
+
puts raw_obj.header
|
35
|
+
File.open("#{data_path+File.basename(raw_path, '.*')}_header.json",'wt') { |json_io|
|
36
|
+
header_json = JSON.pretty_generate(raw_obj.header)
|
37
|
+
json_io.write(header_json)
|
38
|
+
}
|
39
|
+
puts '=== END HEADER ==='
|
40
|
+
# get current position into inner IO-stream object for further using
|
41
|
+
init_pos = raw_obj.pos
|
42
|
+
# need to close inner IO-stream object
|
43
|
+
raw_obj.close
|
44
|
+
#exit
|
45
|
+
# show data of raw file in rows table and convert it into hash and save it as csv-file
|
46
|
+
# signature: new(path,init_pos)
|
47
|
+
# @param path [String] Path to raw file
|
48
|
+
# @param init_pos [String] Init pos in raw file where data rows from
|
49
|
+
# @return [ [SqlServerDts::RawFile,IO] ] block_given? == true
|
50
|
+
SqlServerDts::RawFile.new(raw_path,init_pos) { |raw_obj, raw_io|
|
51
|
+
puts '=== BEGIN DATA ==='
|
52
|
+
i=0
|
53
|
+
fields_arr = []
|
54
|
+
raw_obj.header.each { |field_info| fields_arr << field_info[:name] }
|
55
|
+
puts fields_arr.join("\t")
|
56
|
+
CSV.open("#{data_path+File.basename(raw_io.path, '.*')}_data.csv", 'wb', {headers: fields_arr, write_headers: true, col_sep: "\t"}) { |csv|
|
57
|
+
until raw_io.eof?
|
58
|
+
values_arr = []
|
59
|
+
raw_obj.read_line.each_value { |v| values_arr << v }
|
60
|
+
csv << values_arr
|
61
|
+
puts values_arr.join("\t")
|
62
|
+
i+=1
|
63
|
+
end
|
64
|
+
}
|
65
|
+
puts '=== END DATA ==='
|
66
|
+
puts "total: #{i}"
|
67
|
+
}
|
68
|
+
end
|
69
|
+
end
|
data/lib/sql_server_raw_file.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
|
-
require(File.expand_path('
|
3
|
+
require(File.expand_path('../../lib/version.rb',__FILE__))
|
4
4
|
|
5
5
|
# SqlServerDts::RawFile class
|
6
6
|
class SqlServerDts::RawFile
|
@@ -27,8 +27,8 @@ class SqlServerDts::RawFile
|
|
27
27
|
DEFAULT_ENCODING = 'utf-8'
|
28
28
|
|
29
29
|
# supported versions of Raw File:
|
30
|
-
# 00.90.00.00 => 9 (SQL Server: 9
|
31
|
-
# 00.10.01.00 => 10 (SQL Server: 11)
|
30
|
+
# 00.90.00.00 => 9 (SQL Server: 9,10)
|
31
|
+
# 00.10.01.00 => 10 (SQL Server: 11,12)
|
32
32
|
SUPPORTED_RAW_VERSIONS = %w(00.10.01.00 00.90.00.00)
|
33
33
|
|
34
34
|
# initialization
|
data/sql-server-raw-file.gemspec
CHANGED
@@ -2,19 +2,18 @@
|
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
4
|
|
5
|
-
|
6
|
-
require(File.expand_path('../lib/sql_server_dts_ns.rb',__FILE__))
|
5
|
+
require(File.expand_path('../lib/version.rb',__FILE__))
|
7
6
|
|
8
7
|
Gem::Specification.new do |s|
|
9
8
|
s.name = 'sql-server-raw-file'
|
10
9
|
s.version = SqlServerDts::VERSION
|
11
10
|
s.licenses = ['MIT']
|
12
11
|
s.summary = 'sql-server-raw-file lib'
|
13
|
-
s.description = 'Converts SQL Server Integration Services
|
12
|
+
s.description = 'Converts SQL Server Integration Services raw file to hash objects'
|
14
13
|
s.authors = ['Dmitriy Mullo']
|
15
14
|
s.email = ['d.a.mullo1981@gmail.com']
|
16
15
|
s.homepage = 'https://github.com/dim11981/sql-server-raw-file'
|
17
16
|
s.platform = Gem::Platform::RUBY
|
18
|
-
s.files = Dir['*.md']+Dir['sql-server-raw-file.*']+Dir['lib/*.rb']+Dir['test/*.rb']+Dir['fixtures/*']
|
17
|
+
s.files = Dir['*.md']+Dir['sql-server-raw-file.*']+Dir['lib/*.rb']+Dir['test/*.rb']+Dir['fixtures/*']+Dir['data/*']
|
19
18
|
s.require_path = 'lib'
|
20
19
|
end
|
@@ -1,63 +1,7 @@
|
|
1
|
-
#
|
1
|
+
# encoding: utf-8
|
2
2
|
|
3
|
-
require
|
4
|
-
require 'json'
|
3
|
+
require(File.expand_path('../../fixtures/fixture_sql_data_and_header',__FILE__))
|
5
4
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
raw_file_name = %w(sql09.raw sql10.raw sql11.raw)
|
10
|
-
|
11
|
-
# current_fixture_index = 0
|
12
|
-
current_fixture_index = File.read(fixtures_path+'/current_sql_index').to_i
|
13
|
-
raw_path = fixtures_path+raw_file_name[current_fixture_index]
|
14
|
-
|
15
|
-
# show version of raw file
|
16
|
-
# signature: new(io)
|
17
|
-
# @param io [IO] IO-stream
|
18
|
-
# @return [SqlServerDts::RawFile]
|
19
|
-
File.open(raw_path) { |raw_io|
|
20
|
-
raw_obj = SqlServerDts::RawFile.new(raw_io)
|
21
|
-
puts "RAW VERSION: #{raw_obj.version}"
|
22
|
-
}
|
23
|
-
|
24
|
-
# show header of raw file and convert it into hash and save it as json-file
|
25
|
-
# signature: new(path)
|
26
|
-
# @param path [String] Path to raw file
|
27
|
-
# @return [SqlServerDts::RawFile]
|
28
|
-
raw_obj = SqlServerDts::RawFile.new(raw_path)
|
29
|
-
puts '=== BEGIN HEADER ==='
|
30
|
-
puts raw_obj.header
|
31
|
-
File.open("#{fixtures_path+File.basename(raw_path, '.*')}_header.json",'wt') { |json_io|
|
32
|
-
header_json = JSON.pretty_generate(raw_obj.header)
|
33
|
-
json_io.write(header_json)
|
34
|
-
}
|
35
|
-
puts '=== END HEADER ==='
|
36
|
-
# get current position into inner IO-stream object for further using
|
37
|
-
init_pos = raw_obj.pos
|
38
|
-
# need to close inner IO-stream object
|
39
|
-
raw_obj.close
|
40
|
-
#exit
|
41
|
-
# show data of raw file in rows table and convert it into hash and save it as csv-file
|
42
|
-
# signature: new(path,init_pos)
|
43
|
-
# @param path [String] Path to raw file
|
44
|
-
# @param init_pos [String] Init pos in raw file where data rows from
|
45
|
-
# @return [ [SqlServerDts::RawFile,IO] ] block_given? == true
|
46
|
-
SqlServerDts::RawFile.new(raw_path,init_pos) { |raw_obj, raw_io|
|
47
|
-
puts '=== BEGIN DATA ==='
|
48
|
-
i=0
|
49
|
-
fields_arr = []
|
50
|
-
raw_obj.header.each { |field_info| fields_arr << field_info[:name] }
|
51
|
-
puts fields_arr.join("\t")
|
52
|
-
CSV.open("#{fixtures_path+File.basename(raw_io.path, '.*')}_data.csv", 'wb', {headers: fields_arr, write_headers: true, col_sep: "\t"}) { |csv|
|
53
|
-
until raw_io.eof?
|
54
|
-
values_arr = []
|
55
|
-
raw_obj.read_line.each_value { |v| values_arr << v }
|
56
|
-
csv << values_arr
|
57
|
-
puts values_arr.join("\t")
|
58
|
-
i+=1
|
59
|
-
end
|
60
|
-
}
|
61
|
-
puts '=== END DATA ==='
|
62
|
-
puts "total: #{i}"
|
63
|
-
}
|
5
|
+
# begin test
|
6
|
+
Fixture.show
|
7
|
+
# end test
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sql-server-raw-file
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitriy Mullo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description: Converts SQL Server Integration Services
|
13
|
+
description: Converts SQL Server Integration Services raw file to hash objects
|
14
14
|
email:
|
15
15
|
- d.a.mullo1981@gmail.com
|
16
16
|
executables: []
|
@@ -20,20 +20,24 @@ files:
|
|
20
20
|
- CHANGELOG.md
|
21
21
|
- LICENSE.md
|
22
22
|
- README.md
|
23
|
-
-
|
24
|
-
-
|
25
|
-
-
|
26
|
-
-
|
27
|
-
-
|
28
|
-
-
|
29
|
-
-
|
30
|
-
-
|
31
|
-
-
|
32
|
-
-
|
33
|
-
-
|
34
|
-
-
|
35
|
-
-
|
23
|
+
- data/current_sql_index
|
24
|
+
- data/select-fixture-data-SQL_Server10_11_12.sql
|
25
|
+
- data/select-fixture-data-SQL_Server_9.sql
|
26
|
+
- data/sql09.raw
|
27
|
+
- data/sql09_data.csv
|
28
|
+
- data/sql09_header.json
|
29
|
+
- data/sql10.raw
|
30
|
+
- data/sql10_data.csv
|
31
|
+
- data/sql10_header.json
|
32
|
+
- data/sql11.raw
|
33
|
+
- data/sql11_data.csv
|
34
|
+
- data/sql11_header.json
|
35
|
+
- data/sql12.raw
|
36
|
+
- data/sql12_data.csv
|
37
|
+
- data/sql12_header.json
|
38
|
+
- fixtures/fixture_sql_data_and_header.rb
|
36
39
|
- lib/sql_server_raw_file.rb
|
40
|
+
- lib/version.rb
|
37
41
|
- sql-server-raw-file.gemspec
|
38
42
|
- test/test_sql_data_and_header.rb
|
39
43
|
homepage: https://github.com/dim11981/sql-server-raw-file
|
data/fixtures/current_sql_index
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
2
|