sql-server-raw-file 0.1.2 → 0.1.3
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 +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
|