embulk-output-db2 0.7.0

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 (30) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +118 -0
  3. data/build.gradle +9 -0
  4. data/classpath/embulk-output-db2-0.7.0.jar +0 -0
  5. data/classpath/embulk-output-jdbc-0.7.0.jar +0 -0
  6. data/lib/embulk/output/db2.rb +3 -0
  7. data/out/test/db2/data/test-char.csv +3 -0
  8. data/out/test/db2/data/test-datetime.csv +3 -0
  9. data/out/test/db2/data/test-number.csv +3 -0
  10. data/out/test/db2/yml/test-insert-direct-char.yml +27 -0
  11. data/out/test/db2/yml/test-insert-direct-datetime.yml +24 -0
  12. data/out/test/db2/yml/test-insert-direct-number.yml +27 -0
  13. data/src/main/java/org/embulk/output/DB2OutputPlugin.java +89 -0
  14. data/src/main/java/org/embulk/output/db2/DB2BatchInsert.java +33 -0
  15. data/src/main/java/org/embulk/output/db2/DB2OutputConnection.java +140 -0
  16. data/src/main/java/org/embulk/output/db2/DB2OutputConnector.java +49 -0
  17. data/src/test/java/org/embulk/output/db2/DB2OutputPluginTest.java +499 -0
  18. data/src/test/resources/db2/data/test-char.csv +3 -0
  19. data/src/test/resources/db2/data/test-datetime.csv +3 -0
  20. data/src/test/resources/db2/data/test-number.csv +3 -0
  21. data/src/test/resources/db2/yml/test-insert-char.yml +27 -0
  22. data/src/test/resources/db2/yml/test-insert-datetime.yml +24 -0
  23. data/src/test/resources/db2/yml/test-insert-direct-char.yml +27 -0
  24. data/src/test/resources/db2/yml/test-insert-direct-datetime.yml +24 -0
  25. data/src/test/resources/db2/yml/test-insert-direct-number.yml +27 -0
  26. data/src/test/resources/db2/yml/test-insert-number.yml +27 -0
  27. data/src/test/resources/db2/yml/test-replace-long-name.yml +27 -0
  28. data/src/test/resources/db2/yml/test-replace.yml +27 -0
  29. data/src/test/resources/db2/yml/test-truncate-insert.yml +27 -0
  30. metadata +72 -0
@@ -0,0 +1,499 @@
1
+ package org.embulk.output.db2;
2
+
3
+ import static java.util.Locale.ENGLISH;
4
+ import static org.junit.Assert.assertEquals;
5
+
6
+ import java.math.BigDecimal;
7
+ import java.sql.Clob;
8
+ import java.sql.Connection;
9
+ import java.sql.DriverManager;
10
+ import java.sql.ResultSet;
11
+ import java.sql.SQLException;
12
+ import java.sql.Time;
13
+ import java.sql.Timestamp;
14
+ import java.text.DateFormat;
15
+ import java.text.ParseException;
16
+ import java.text.SimpleDateFormat;
17
+ import java.util.Date;
18
+ import java.util.List;
19
+
20
+ import org.embulk.output.AbstractJdbcOutputPluginTest;
21
+ import org.embulk.output.DB2OutputPlugin;
22
+ import org.embulk.spi.OutputPlugin;
23
+ import org.junit.Test;
24
+
25
+
26
+ public class DB2OutputPluginTest extends AbstractJdbcOutputPluginTest
27
+ {
28
+ @Override
29
+ protected void prepare() throws SQLException {
30
+ tester.addPlugin(OutputPlugin.class, "db2", DB2OutputPlugin.class);
31
+
32
+ try {
33
+ Class.forName("com.ibm.db2.jcc.DB2Driver");
34
+ } catch (ClassNotFoundException e) {
35
+ System.err.println("Warning: you should put 'db2jcc4.jar' in 'embulk-input-db2/driver' directory in order to test.");
36
+ return;
37
+ }
38
+
39
+ try {
40
+ connect();
41
+ } catch (SQLException e) {
42
+ System.err.println(e);
43
+ System.err.println(String.format(ENGLISH, "Warning: prepare a schema on DB2 (server = %s, port = %d, database = %s, user = %s, password = %s).",
44
+ getHost(), getPort(), getDatabase(), getUser(), getPassword()));
45
+ return;
46
+ }
47
+
48
+ enabled = true;
49
+ }
50
+
51
+ @Test
52
+ public void testInsertDirectNumber() throws Exception
53
+ {
54
+ String table = "TEST_NUMBER";
55
+
56
+ dropTable(table);
57
+ createNumberTable(table);
58
+
59
+ test("/db2/yml/test-insert-direct-number.yml");
60
+
61
+ assertNumberTable(table);
62
+ }
63
+
64
+ @Test
65
+ public void testInsertDirectChar() throws Exception
66
+ {
67
+ String table = "TEST_CHAR";
68
+
69
+ dropTable(table);
70
+ createCharTable(table);
71
+
72
+ test("/db2/yml/test-insert-direct-char.yml");
73
+
74
+ assertCharTable(table, false);
75
+ }
76
+
77
+ @Test
78
+ public void testInsertDirectDateTime() throws Exception
79
+ {
80
+ String table = "TEST_DATETIME";
81
+
82
+ dropTable(table);
83
+ createDateTimeTable(table);
84
+
85
+ test("/db2/yml/test-insert-direct-datetime.yml");
86
+
87
+ assertDateTimeTable(table);
88
+ }
89
+
90
+ @Test
91
+ public void testInsertNumber() throws Exception
92
+ {
93
+ String table = "TEST_NUMBER";
94
+
95
+ dropTable(table);
96
+ createNumberTable(table);
97
+
98
+ test("/db2/yml/test-insert-number.yml");
99
+
100
+ assertNumberTable(table);
101
+ }
102
+
103
+ @Test
104
+ public void testInsertChar() throws Exception
105
+ {
106
+ String table = "TEST_CHAR";
107
+
108
+ dropTable(table);
109
+ createCharTable(table);
110
+
111
+ test("/db2/yml/test-insert-char.yml");
112
+
113
+ assertCharTable(table, false);
114
+ }
115
+
116
+ @Test
117
+ public void testInsertDateTime() throws Exception
118
+ {
119
+ String table = "TEST_DATETIME";
120
+
121
+ dropTable(table);
122
+ createDateTimeTable(table);
123
+
124
+ test("/db2/yml/test-insert-datetime.yml");
125
+
126
+ assertDateTimeTable(table);
127
+ }
128
+
129
+ @Test
130
+ public void testInsertCreateNumber() throws Exception
131
+ {
132
+ String table = "TEST_NUMBER";
133
+
134
+ dropTable(table);
135
+
136
+ test("/db2/yml/test-insert-number.yml");
137
+
138
+ List<List<Object>> rows = select(table);
139
+ assertEquals(3, rows.size());
140
+ {
141
+ List<Object> row = rows.get(0);
142
+ assertEquals("A001", row.get(0));
143
+ assertEquals(12345L, row.get(1));
144
+ assertEquals(123456789L, row.get(2));
145
+ assertEquals(123456789012L, row.get(3));
146
+ assertEquals("123456.78", row.get(4));
147
+ assertEquals("876543.21", row.get(5));
148
+ assertEquals(1.23456D, row.get(6));
149
+ assertEquals(1.23456789012D, row.get(7));
150
+ assertEquals(3.45678901234D, row.get(8));
151
+ }
152
+ {
153
+ List<Object> row = rows.get(1);
154
+ assertEquals("A002", row.get(0));
155
+ assertEquals(-9999L, row.get(1));
156
+ assertEquals(-999999999L, row.get(2));
157
+ assertEquals(-999999999999L, row.get(3));
158
+ assertEquals("-999999.99", row.get(4));
159
+ assertEquals("-999999.99", row.get(5));
160
+ assertEquals(-9.999999D, row.get(6));
161
+ assertEquals(-9.999999D, row.get(7));
162
+ assertEquals(-9.99999999999999D, row.get(8));
163
+ }
164
+ {
165
+ List<Object> row = rows.get(2);
166
+ assertEquals("A003", row.get(0));
167
+ assertEquals(null, row.get(1));
168
+ assertEquals(null, row.get(2));
169
+ assertEquals(null, row.get(3));
170
+ assertEquals(null, row.get(4));
171
+ assertEquals(null, row.get(5));
172
+ assertEquals(null, row.get(6));
173
+ assertEquals(null, row.get(7));
174
+ assertEquals(null, row.get(8));
175
+ }
176
+ }
177
+
178
+ @Test
179
+ public void testInsertCreateChar() throws Exception
180
+ {
181
+ String table = "TEST_CHAR";
182
+
183
+ dropTable(table);
184
+
185
+ test("/db2/yml/test-insert-char.yml");
186
+
187
+ assertCharTable(table, true, 0);
188
+ }
189
+
190
+ @Test
191
+ public void testInsertCreateDateTime() throws Exception
192
+ {
193
+ String table = "TEST_DATETIME";
194
+
195
+ dropTable(table);
196
+
197
+ test("/db2/yml/test-insert-datetime.yml");
198
+
199
+ assertDateTimeTable(table, 0);
200
+ }
201
+
202
+ @Test
203
+ public void testTruncateInsert() throws Exception
204
+ {
205
+ String table = "TEST_NUMBER";
206
+
207
+ dropTable(table);
208
+ createNumberTable(table);
209
+
210
+ test("/db2/yml/test-truncate-insert.yml");
211
+
212
+ assertNumberTable(table, 0);
213
+ }
214
+
215
+ @Test
216
+ public void testReplace() throws Exception
217
+ {
218
+ String table = "TEST_CHAR";
219
+
220
+ dropTable(table);
221
+ createCharTable(table);
222
+
223
+ test("/db2/yml/test-replace.yml");
224
+
225
+ assertCharTable(table, true, 0);
226
+ }
227
+
228
+ @Test
229
+ public void testReplaceCreate() throws Exception
230
+ {
231
+ String table = "TEST_CHAR";
232
+
233
+ dropTable(table);
234
+
235
+ test("/db2/yml/test-replace.yml");
236
+
237
+ assertCharTable(table, true, 0);
238
+ }
239
+
240
+ @Test
241
+ public void testReplaceLongName() throws Exception
242
+ {
243
+ // 128 characters
244
+ String table = "TEST_CHAR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678";
245
+
246
+ dropTable(table);
247
+ createCharTable(table);
248
+
249
+ test("/db2/yml/test-replace-long-name.yml");
250
+
251
+ assertCharTable(table, true, 0);
252
+ }
253
+
254
+
255
+ @Override
256
+ protected Object getValue(ResultSet resultSet, int index) throws SQLException {
257
+ Object value = super.getValue(resultSet, index);
258
+ if (value instanceof Clob) {
259
+ return resultSet.getString(index);
260
+ }
261
+ return value;
262
+ }
263
+
264
+ private java.sql.Date createDate(String s) throws ParseException
265
+ {
266
+ DateFormat format = new SimpleDateFormat("yyyy/MM/dd");
267
+ Date date = format.parse(s);
268
+ return new java.sql.Date(date.getTime());
269
+ }
270
+
271
+ private Timestamp createTimestamp(String s, int nanos) throws ParseException
272
+ {
273
+ DateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
274
+ Date date = format.parse(s);
275
+ Timestamp timestamp = new Timestamp(date.getTime());
276
+ timestamp.setNanos(nanos);
277
+ return timestamp;
278
+ }
279
+
280
+ private Time createTime(String s) throws ParseException
281
+ {
282
+ DateFormat format = new SimpleDateFormat("HH:mm:ss");
283
+ Date date = format.parse(s);
284
+ return new Time(date.getTime());
285
+ }
286
+
287
+ private void createNumberTable(String table) throws SQLException
288
+ {
289
+ String sql = String.format("CREATE TABLE %s ("
290
+ + "ID CHAR(4) NOT NULL,"
291
+ + "SMALLINT_ITEM SMALLINT,"
292
+ + "INTEGER_ITEM INTEGER,"
293
+ + "BIGINT_ITEM BIGINT,"
294
+ + "DECIMAL_ITEM DECIMAL(8,2),"
295
+ + "NUMERIC_ITEM NUMERIC(8,2),"
296
+ + "REAL_ITEM REAL,"
297
+ + "DOUBLE_ITEM DOUBLE,"
298
+ + "FLOAT_ITEM FLOAT,"
299
+ + "PRIMARY KEY (ID))", table);
300
+ executeSQL(sql);
301
+
302
+ executeSQL(String.format("INSERT INTO %s VALUES('9999',"
303
+ + "NULL,"
304
+ + "NULL,"
305
+ + "NULL,"
306
+ + "NULL,"
307
+ + "NULL,"
308
+ + "NULL,"
309
+ + "NULL,"
310
+ + "NULL)", table));
311
+ }
312
+
313
+ private void createCharTable(String table) throws SQLException
314
+ {
315
+ String sql = String.format("CREATE TABLE %s ("
316
+ + "ID CHAR(4) NOT NULL,"
317
+ + "CHAR_ITEM CHAR(4),"
318
+ + "VARCHAR_ITEM VARCHAR(8),"
319
+ + "CLOB_ITEM CLOB,"
320
+ + "GRAPHIC_ITEM GRAPHIC(4),"
321
+ + "VARGRAPHIC_ITEM VARGRAPHIC(8),"
322
+ + "NCHAR_ITEM NCHAR(4),"
323
+ + "NVARCHAR_ITEM NVARCHAR(8),"
324
+ + "NCLOB_ITEM NCLOB,"
325
+ + "PRIMARY KEY (ID))", table);
326
+ executeSQL(sql);
327
+
328
+ executeSQL(String.format("INSERT INTO %s VALUES('9999',"
329
+ + "NULL,"
330
+ + "NULL,"
331
+ + "NULL,"
332
+ + "NULL,"
333
+ + "NULL,"
334
+ + "NULL,"
335
+ + "NULL,"
336
+ + "NULL)", table));
337
+ }
338
+
339
+ private void createDateTimeTable(String table) throws SQLException
340
+ {
341
+ String sql = String.format("CREATE TABLE %s ("
342
+ + "ID CHAR(4) NOT NULL,"
343
+ + "DATE_ITEM DATE,"
344
+ + "TIME_ITEM TIME,"
345
+ + "TIMESTAMP_ITEM TIMESTAMP,"
346
+ + "TIMESTAMP0_ITEM TIMESTAMP(0),"
347
+ + "TIMESTAMP12_ITEM TIMESTAMP(12),"
348
+ + "PRIMARY KEY (ID))", table);
349
+ executeSQL(sql);
350
+
351
+ executeSQL(String.format("INSERT INTO %s VALUES('9999',"
352
+ + "NULL,"
353
+ + "NULL,"
354
+ + "NULL,"
355
+ + "NULL,"
356
+ + "NULL)", table));
357
+ }
358
+
359
+ private void assertNumberTable(String table) throws SQLException
360
+ {
361
+ assertNumberTable(table, 1);
362
+ }
363
+
364
+ private void assertNumberTable(String table, int skip) throws SQLException
365
+ {
366
+ List<List<Object>> rows = select(table);
367
+ assertEquals(skip + 3, rows.size());
368
+ {
369
+ List<Object> row = rows.get(skip + 0);
370
+ assertEquals("A001", row.get(0));
371
+ assertEquals(12345, row.get(1));
372
+ assertEquals(123456789, row.get(2));
373
+ assertEquals(123456789012L, row.get(3));
374
+ assertEquals(new BigDecimal("123456.78"), row.get(4));
375
+ assertEquals(new BigDecimal("876543.21"), row.get(5));
376
+ assertEquals(1.23456F, row.get(6));
377
+ assertEquals(1.23456789012D, row.get(7));
378
+ assertEquals(3.45678901234D, row.get(8));
379
+ }
380
+ {
381
+ List<Object> row = rows.get(skip + 1);
382
+ assertEquals("A002", row.get(0));
383
+ assertEquals(-9999, row.get(1));
384
+ assertEquals(-999999999, row.get(2));
385
+ assertEquals(-999999999999L, row.get(3));
386
+ assertEquals(new BigDecimal("-999999.99"), row.get(4));
387
+ assertEquals(new BigDecimal("-999999.99"), row.get(5));
388
+ assertEquals(-9.999999F, row.get(6));
389
+ assertEquals(-9.999999D, row.get(7));
390
+ assertEquals(-9.99999999999999D, row.get(8));
391
+ }
392
+ {
393
+ List<Object> row = rows.get(skip + 2);
394
+ assertEquals("A003", row.get(0));
395
+ assertEquals(null, row.get(1));
396
+ assertEquals(null, row.get(2));
397
+ assertEquals(null, row.get(3));
398
+ assertEquals(null, row.get(4));
399
+ assertEquals(null, row.get(5));
400
+ assertEquals(null, row.get(6));
401
+ assertEquals(null, row.get(7));
402
+ assertEquals(null, row.get(8));
403
+ }
404
+ }
405
+
406
+ private void assertCharTable(String table, boolean trimming) throws SQLException
407
+ {
408
+ assertCharTable(table, trimming, 1);
409
+ }
410
+
411
+ private void assertCharTable(String table, boolean trimming, int skip) throws SQLException
412
+ {
413
+ List<List<Object>> rows = select(table);
414
+ assertEquals(skip + 3, rows.size());
415
+ {
416
+ List<Object> row = rows.get(skip + 0);
417
+ assertEquals("A001", row.get(0));
418
+ assertEquals(trimming ? "aa" : "aa ", row.get(1));
419
+ assertEquals("AA", row.get(2));
420
+ assertEquals("aaaaaaaaaaaa", row.get(3));
421
+ assertEquals(trimming? "ああ" : "ああ ", row.get(4));
422
+ assertEquals("いいいい", row.get(5));
423
+ assertEquals(trimming? "aa" : "aa ", row.get(6));
424
+ assertEquals("AA", row.get(7));
425
+ assertEquals("aaaaaaaa", row.get(8));
426
+ }
427
+ {
428
+ List<Object> row = rows.get(skip + 1);
429
+ assertEquals("A002", row.get(0));
430
+ assertEquals("XXXX", row.get(1));
431
+ assertEquals("XXXXXXXX", row.get(2));
432
+ assertEquals("XXXXXXXXXXXXXXXX", row.get(3));
433
+ assertEquals("XXXX", row.get(4));
434
+ assertEquals("XXXXXXXX", row.get(5));
435
+ assertEquals("XXXX", row.get(6));
436
+ assertEquals("XXXXXXXX", row.get(7));
437
+ assertEquals("XXXXXXXXXXXXXXXX", row.get(8));
438
+ }
439
+ {
440
+ List<Object> row = rows.get(skip + 2);
441
+ assertEquals("A003", row.get(0));
442
+ assertEquals(null, row.get(1));
443
+ assertEquals(null, row.get(2));
444
+ assertEquals(null, row.get(3));
445
+ assertEquals(null, row.get(4));
446
+ assertEquals(null, row.get(5));
447
+ assertEquals(null, row.get(6));
448
+ assertEquals(null, row.get(7));
449
+ assertEquals(null, row.get(8));
450
+ }
451
+ }
452
+
453
+ private void assertDateTimeTable(String table) throws SQLException, ParseException
454
+ {
455
+ assertDateTimeTable(table, 1);
456
+ }
457
+
458
+ private void assertDateTimeTable(String table, int skip) throws SQLException, ParseException
459
+ {
460
+ List<List<Object>> rows = select(table);
461
+ assertEquals(skip + 3, rows.size());
462
+ {
463
+ List<Object> row = rows.get(skip + 0);
464
+ assertEquals("A001", row.get(0));
465
+ assertEquals(createDate("2016/09/08"), row.get(1));
466
+ assertEquals(createTime("12:34:45"), row.get(2));
467
+ assertEquals(createTimestamp("2016/09/09 12:34:45", 123456000), row.get(3));
468
+ assertEquals(createTimestamp("2016/09/10 12:34:45", 0), row.get(4));
469
+ // Embulk TimestampParser cannot parse values under microseconds.
470
+ assertEquals(createTimestamp("2016/09/11 12:34:45", 123456000), row.get(5));
471
+ }
472
+ {
473
+ List<Object> row = rows.get(skip + 1);
474
+ assertEquals("A002", row.get(0));
475
+ assertEquals(createDate("2016/12/31"), row.get(1));
476
+ assertEquals(createTime("23:59:59"), row.get(2));
477
+ assertEquals(createTimestamp("2016/12/31 23:59:59", 999999000), row.get(3));
478
+ assertEquals(createTimestamp("2016/12/31 23:59:59", 0), row.get(4));
479
+ assertEquals(createTimestamp("2016/12/31 23:59:59", 999999000), row.get(5));
480
+ }
481
+ {
482
+ List<Object> row = rows.get(skip + 2);
483
+ assertEquals("A003", row.get(0));
484
+ assertEquals(null, row.get(1));
485
+ assertEquals(null, row.get(2));
486
+ assertEquals(null, row.get(3));
487
+ assertEquals(null, row.get(4));
488
+ assertEquals(null, row.get(5));
489
+ }
490
+ }
491
+
492
+ @Override
493
+ protected Connection connect() throws SQLException
494
+ {
495
+ return DriverManager.getConnection(String.format(ENGLISH, "jdbc:db2://%s:%d/%s", getHost(), getPort(), getDatabase()),
496
+ getUser(), getPassword());
497
+ }
498
+
499
+ }
@@ -0,0 +1,3 @@
1
+ A001,aa,AA,aaaaaaaaaaaa,ああ,いいいい,aa,AA,aaaaaaaa
2
+ A002,XXXX,XXXXXXXX,XXXXXXXXXXXXXXXX,XXXX,XXXXXXXX,XXXX,XXXXXXXX,XXXXXXXXXXXXXXXX
3
+ A003,,,,,,,,
@@ -0,0 +1,3 @@
1
+ A001,2016/09/08,12:34:45,2016/09/09 12:34:45.123456,2016/09/10 12:34:45,2016/09/11 12:34:45.123456789012
2
+ A002,2016/12/31,23:59:59,2016/12/31 23:59:59.999999,2016/12/31 23:59:59,2016/12/31 23:59:59.999999999999
3
+ A003,,,,,
@@ -0,0 +1,3 @@
1
+ A001,12345,123456789,123456789012,123456.78,876543.21,1.23456,1.23456789012,3.45678901234
2
+ A002,-9999,-999999999,-999999999999,-999999.99,-999999.99,-9.999999,-9.999999,-9.99999999999999
3
+ A003,,,,,,,,
@@ -0,0 +1,27 @@
1
+ in:
2
+ type: file
3
+ path_prefix: '/db2/data/test-char.csv'
4
+ parser:
5
+ charset: UTF-8
6
+ newline: CRLF
7
+ type: csv
8
+ delimiter: ','
9
+ quote: ''
10
+ columns:
11
+ - {name: ID, type: string}
12
+ - {name: CHAR_ITEM, type: string}
13
+ - {name: VARCHAR_ITEM, type: string}
14
+ - {name: CLOB_ITEM, type: string}
15
+ - {name: GRAPHIC_ITEM, type: string}
16
+ - {name: VARGRAPHIC_ITEM, type: string}
17
+ - {name: NCHAR_ITEM, type: string}
18
+ - {name: NVARCHAR_ITEM, type: string}
19
+ - {name: NCLOB_ITEM, type: string}
20
+ out:
21
+ type: db2
22
+ host: #host#
23
+ database: #database#
24
+ user: #user#
25
+ password: #password#
26
+ table: TEST_CHAR
27
+ mode: insert
@@ -0,0 +1,24 @@
1
+ in:
2
+ type: file
3
+ path_prefix: '/db2/data/test-datetime.csv'
4
+ parser:
5
+ charset: UTF-8
6
+ newline: CRLF
7
+ type: csv
8
+ delimiter: ','
9
+ quote: ''
10
+ columns:
11
+ - {name: ID, type: string}
12
+ - {name: DATE_ITEM, type: timestamp, format: '%Y/%m/%d'}
13
+ - {name: TIME_ITEM, type: timestamp, format: '%H:%M:%S'}
14
+ - {name: TIMESTAMP_ITEM, type: timestamp, format: '%Y/%m/%d %H:%M:%S.%N'}
15
+ - {name: TIMESTAMP0_ITEM, type: timestamp, format: '%Y/%m/%d %H:%M:%S'}
16
+ - {name: TIMESTAMP12_ITEM, type: timestamp, format: '%Y/%m/%d %H:%M:%S.%N'}
17
+ out:
18
+ type: db2
19
+ host: #host#
20
+ database: #database#
21
+ user: #user#
22
+ password: #password#
23
+ table: TEST_DATETIME
24
+ mode: insert
@@ -0,0 +1,27 @@
1
+ in:
2
+ type: file
3
+ path_prefix: '/db2/data/test-char.csv'
4
+ parser:
5
+ charset: UTF-8
6
+ newline: CRLF
7
+ type: csv
8
+ delimiter: ','
9
+ quote: ''
10
+ columns:
11
+ - {name: ID, type: string}
12
+ - {name: CHAR_ITEM, type: string}
13
+ - {name: VARCHAR_ITEM, type: string}
14
+ - {name: CLOB_ITEM, type: string}
15
+ - {name: GRAPHIC_ITEM, type: string}
16
+ - {name: VARGRAPHIC_ITEM, type: string}
17
+ - {name: NCHAR_ITEM, type: string}
18
+ - {name: NVARCHAR_ITEM, type: string}
19
+ - {name: NCLOB_ITEM, type: string}
20
+ out:
21
+ type: db2
22
+ host: #host#
23
+ database: #database#
24
+ user: #user#
25
+ password: #password#
26
+ table: TEST_CHAR
27
+ mode: insert_direct
@@ -0,0 +1,24 @@
1
+ in:
2
+ type: file
3
+ path_prefix: '/db2/data/test-datetime.csv'
4
+ parser:
5
+ charset: UTF-8
6
+ newline: CRLF
7
+ type: csv
8
+ delimiter: ','
9
+ quote: ''
10
+ columns:
11
+ - {name: ID, type: string}
12
+ - {name: DATE_ITEM, type: timestamp, format: '%Y/%m/%d'}
13
+ - {name: TIME_ITEM, type: timestamp, format: '%H:%M:%S'}
14
+ - {name: TIMESTAMP_ITEM, type: timestamp, format: '%Y/%m/%d %H:%M:%S.%N'}
15
+ - {name: TIMESTAMP0_ITEM, type: timestamp, format: '%Y/%m/%d %H:%M:%S'}
16
+ - {name: TIMESTAMP12_ITEM, type: timestamp, format: '%Y/%m/%d %H:%M:%S.%N'}
17
+ out:
18
+ type: db2
19
+ host: #host#
20
+ database: #database#
21
+ user: #user#
22
+ password: #password#
23
+ table: TEST_DATETIME
24
+ mode: insert_direct
@@ -0,0 +1,27 @@
1
+ in:
2
+ type: file
3
+ path_prefix: '/db2/data/test-number.csv'
4
+ parser:
5
+ charset: UTF-8
6
+ newline: CRLF
7
+ type: csv
8
+ delimiter: ','
9
+ quote: ''
10
+ columns:
11
+ - {name: ID, type: string}
12
+ - {name: SMALLINT_ITEM, type: long}
13
+ - {name: INTEGER_ITEM, type: long}
14
+ - {name: BIGINT_ITEM, type: long}
15
+ - {name: DECIMAL_ITEM, type: string}
16
+ - {name: NUMERIC_ITEM, type: string}
17
+ - {name: REAL_ITEM, type: double}
18
+ - {name: DOUBLE_ITEM, type: double}
19
+ - {name: FLOAT_ITEM, type: double}
20
+ out:
21
+ type: db2
22
+ host: #host#
23
+ database: #database#
24
+ user: #user#
25
+ password: #password#
26
+ table: TEST_NUMBER
27
+ mode: insert_direct
@@ -0,0 +1,27 @@
1
+ in:
2
+ type: file
3
+ path_prefix: '/db2/data/test-number.csv'
4
+ parser:
5
+ charset: UTF-8
6
+ newline: CRLF
7
+ type: csv
8
+ delimiter: ','
9
+ quote: ''
10
+ columns:
11
+ - {name: ID, type: string}
12
+ - {name: SMALLINT_ITEM, type: long}
13
+ - {name: INTEGER_ITEM, type: long}
14
+ - {name: BIGINT_ITEM, type: long}
15
+ - {name: DECIMAL_ITEM, type: string}
16
+ - {name: NUMERIC_ITEM, type: string}
17
+ - {name: REAL_ITEM, type: double}
18
+ - {name: DOUBLE_ITEM, type: double}
19
+ - {name: FLOAT_ITEM, type: double}
20
+ out:
21
+ type: db2
22
+ host: #host#
23
+ database: #database#
24
+ user: #user#
25
+ password: #password#
26
+ table: TEST_NUMBER
27
+ mode: insert