embulk-output-db2 0.8.0 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -5
  3. data/classpath/{embulk-output-db2-0.8.0.jar → embulk-output-db2-0.8.1.jar} +0 -0
  4. data/classpath/{embulk-output-jdbc-0.8.0.jar → embulk-output-jdbc-0.8.1.jar} +0 -0
  5. data/src/test/java/org/embulk/output/db2/BasicTest.java +164 -0
  6. data/src/test/java/org/embulk/output/db2/DB2Tests.java +106 -0
  7. data/src/test/resources/org/embulk/output/db2/test/expect/basic/setup.sql +78 -0
  8. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_char.csv +4 -0
  9. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_create_char_expected.txt +9 -0
  10. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_create_datetime_expected.txt +5 -0
  11. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_create_number_expected.txt +9 -0
  12. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_datetime.csv +4 -0
  13. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_char.yml +2 -0
  14. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_char_expected.txt +10 -0
  15. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_create_char.yml +2 -0
  16. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_create_datetime.yml +2 -0
  17. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_create_number.yml +2 -0
  18. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_datetime.yml +2 -0
  19. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_datetime_expected.txt +6 -0
  20. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_direct_char.yml +2 -0
  21. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_direct_datetime.yml +2 -0
  22. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_direct_number.yml +2 -0
  23. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_number.yml +2 -0
  24. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_number_expected.txt +6 -0
  25. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_number.csv +4 -0
  26. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_number2.csv +4 -0
  27. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_replace.yml +2 -0
  28. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_replace_create.yml +2 -0
  29. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_replace_long_name.yml +2 -0
  30. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_truncate_insert.yml +2 -0
  31. data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_truncate_insert_expected.txt +5 -0
  32. metadata +31 -23
  33. data/out/test/db2/data/test-char.csv +0 -3
  34. data/out/test/db2/data/test-datetime.csv +0 -3
  35. data/out/test/db2/data/test-number.csv +0 -3
  36. data/out/test/db2/yml/test-insert-direct-char.yml +0 -27
  37. data/out/test/db2/yml/test-insert-direct-datetime.yml +0 -24
  38. data/out/test/db2/yml/test-insert-direct-number.yml +0 -27
  39. data/src/test/java/org/embulk/output/db2/DB2OutputPluginTest.java +0 -515
  40. data/src/test/resources/db2/data/test-char.csv +0 -3
  41. data/src/test/resources/db2/data/test-datetime.csv +0 -3
  42. data/src/test/resources/db2/data/test-number.csv +0 -3
  43. data/src/test/resources/db2/yml/test-insert-char.yml +0 -27
  44. data/src/test/resources/db2/yml/test-insert-datetime.yml +0 -24
  45. data/src/test/resources/db2/yml/test-insert-direct-char.yml +0 -27
  46. data/src/test/resources/db2/yml/test-insert-direct-datetime.yml +0 -24
  47. data/src/test/resources/db2/yml/test-insert-direct-number.yml +0 -27
  48. data/src/test/resources/db2/yml/test-insert-number.yml +0 -27
  49. data/src/test/resources/db2/yml/test-replace-long-name.yml +0 -27
  50. data/src/test/resources/db2/yml/test-replace.yml +0 -27
  51. data/src/test/resources/db2/yml/test-truncate-insert.yml +0 -27
@@ -0,0 +1,2 @@
1
+ table: TEST_DATETIME2
2
+ mode: insert
@@ -0,0 +1,2 @@
1
+ table: TEST_NUMBER2
2
+ mode: insert
@@ -0,0 +1,2 @@
1
+ table: TEST_DATETIME
2
+ mode: insert
@@ -0,0 +1,6 @@
1
+ ----- ------------ ---------- ------------------------------ ------------------------ -------------------------------------
2
+ 1001 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.123456000000
3
+ 1002 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.999999000000
4
+ 1003
5
+ 9999
6
+ ID DATE_ITEM TIME_ITEM TIMESTAMP_ITEM TIMESTAMP0_ITEM TIMESTAMP12_ITEM
@@ -0,0 +1,2 @@
1
+ table: TEST_CHAR
2
+ mode: insert_direct
@@ -0,0 +1,2 @@
1
+ table: TEST_DATETIME
2
+ mode: insert_direct
@@ -0,0 +1,2 @@
1
+ table: TEST_NUMBER
2
+ mode: insert_direct
@@ -0,0 +1,2 @@
1
+ table: TEST_NUMBER
2
+ mode: insert
@@ -0,0 +1,6 @@
1
+ ID SMALLINT_ITEM INTEGER_ITEM BIGINT_ITEM DECIMAL_ITEM NUMERIC_ITEM REAL_ITEM DOUBLE_ITEM FLOAT_ITEM
2
+ 1001 12345 123456789 123456789012 123456.78 876543.21 1.23456 1.23456789012 3.45678901234
3
+ 1002 -9999 -999999999 -999999999999 -999999.99 -999999.99 -9.999999 -9.999999 -9.99999999999999
4
+ 1003
5
+ 9999
6
+ ------------- -------------- ------------- ----------------------- ------------- ------------- --------------- -------------------------- --------------------------
@@ -0,0 +1,4 @@
1
+ ID:long,SMALLINT_ITEM:long,INTEGER_ITEM:long,BIGINT_ITEM:long,DECIMAL_ITEM:string,NUMERIC_ITEM:string,REAL_ITEM:double,DOUBLE_ITEM:double,FLOAT_ITEM:double
2
+ 1001,12345,123456789,123456789012,123456.78,876543.21,1.23456,1.23456789012,3.45678901234
3
+ 1002,-9999,-999999999,-999999999999,-999999.99,-999999.99,-9.999999,-9.999999,-9.99999999999999
4
+ 1003,,,,,,,,
@@ -0,0 +1,4 @@
1
+ ID:long,SMALLINT_ITEM:long,INTEGER_ITEM:long,BIGINT_ITEM:long,DECIMAL_ITEM:string,NUMERIC_ITEM:string,REAL_ITEM:double,DOUBLE_ITEM:double,FLOAT_ITEM:double
2
+ 1001,12345,123456789,123456789012,123456.78,876543.21,1.23456,1.23456789012,3.45678901234
3
+ 1002,-9999,-999999999,-999999999999,-999999.99,-999999.99,-9.999999,-9.999999,-9.99999999999999
4
+ 1003,,,,,,,,
@@ -0,0 +1,2 @@
1
+ table: TEST_CHAR
2
+ mode: replace
@@ -0,0 +1,2 @@
1
+ table: TEST_CHAR2
2
+ mode: replace
@@ -0,0 +1,2 @@
1
+ table: TEST_CHAR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
2
+ mode: replace
@@ -0,0 +1,2 @@
1
+ table: TEST_NUMBER
2
+ mode: truncate_insert
@@ -0,0 +1,5 @@
1
+ ID SMALLINT_ITEM INTEGER_ITEM BIGINT_ITEM DECIMAL_ITEM NUMERIC_ITEM REAL_ITEM DOUBLE_ITEM FLOAT_ITEM
2
+ 1001 12345 123456789 123456789012 123456.78 876543.21 1.23456 1.23456789012 3.45678901234
3
+ 1002 -9999 -999999999 -999999999999 -999999.99 -999999.99 -9.999999 -9.999999 -9.99999999999999
4
+ 1003
5
+ ------------- -------------- ------------- ----------------------- ------------- ------------- --------------- -------------------------- --------------------------
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-output-db2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sadayuki Furuhashi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-26 00:00:00.000000000 Z
11
+ date: 2018-11-16 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Inserts or updates records to a table.
14
14
  email:
@@ -19,32 +19,40 @@ extra_rdoc_files: []
19
19
  files:
20
20
  - README.md
21
21
  - build.gradle
22
- - classpath/embulk-output-db2-0.8.0.jar
23
- - classpath/embulk-output-jdbc-0.8.0.jar
22
+ - classpath/embulk-output-db2-0.8.1.jar
23
+ - classpath/embulk-output-jdbc-0.8.1.jar
24
24
  - lib/embulk/output/db2.rb
25
- - out/test/db2/data/test-char.csv
26
- - out/test/db2/data/test-datetime.csv
27
- - out/test/db2/data/test-number.csv
28
- - out/test/db2/yml/test-insert-direct-char.yml
29
- - out/test/db2/yml/test-insert-direct-datetime.yml
30
- - out/test/db2/yml/test-insert-direct-number.yml
31
25
  - src/main/java/org/embulk/output/DB2OutputPlugin.java
32
26
  - src/main/java/org/embulk/output/db2/DB2BatchInsert.java
33
27
  - src/main/java/org/embulk/output/db2/DB2OutputConnection.java
34
28
  - src/main/java/org/embulk/output/db2/DB2OutputConnector.java
35
- - src/test/java/org/embulk/output/db2/DB2OutputPluginTest.java
36
- - src/test/resources/db2/data/test-char.csv
37
- - src/test/resources/db2/data/test-datetime.csv
38
- - src/test/resources/db2/data/test-number.csv
39
- - src/test/resources/db2/yml/test-insert-char.yml
40
- - src/test/resources/db2/yml/test-insert-datetime.yml
41
- - src/test/resources/db2/yml/test-insert-direct-char.yml
42
- - src/test/resources/db2/yml/test-insert-direct-datetime.yml
43
- - src/test/resources/db2/yml/test-insert-direct-number.yml
44
- - src/test/resources/db2/yml/test-insert-number.yml
45
- - src/test/resources/db2/yml/test-replace-long-name.yml
46
- - src/test/resources/db2/yml/test-replace.yml
47
- - src/test/resources/db2/yml/test-truncate-insert.yml
29
+ - src/test/java/org/embulk/output/db2/BasicTest.java
30
+ - src/test/java/org/embulk/output/db2/DB2Tests.java
31
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/setup.sql
32
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_char.csv
33
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_create_char_expected.txt
34
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_create_datetime_expected.txt
35
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_create_number_expected.txt
36
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_datetime.csv
37
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_char.yml
38
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_char_expected.txt
39
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_create_char.yml
40
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_create_datetime.yml
41
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_create_number.yml
42
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_datetime.yml
43
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_datetime_expected.txt
44
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_direct_char.yml
45
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_direct_datetime.yml
46
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_direct_number.yml
47
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_number.yml
48
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_number_expected.txt
49
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_number.csv
50
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_number2.csv
51
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_replace.yml
52
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_replace_create.yml
53
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_replace_long_name.yml
54
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_truncate_insert.yml
55
+ - src/test/resources/org/embulk/output/db2/test/expect/basic/test_truncate_insert_expected.txt
48
56
  homepage: https://github.com/embulk/embulk-output-jdbc
49
57
  licenses:
50
58
  - Apache 2.0
@@ -1,3 +0,0 @@
1
- A001,aa,AA,aaaaaaaaaaaa,ああ,いいいい,aa,AA,aaaaaaaa
2
- A002,XXXX,XXXXXXXX,XXXXXXXXXXXXXXXX,XXXX,XXXXXXXX,XXXX,XXXXXXXX,XXXXXXXXXXXXXXXX
3
- A003,,,,,,,,
@@ -1,3 +0,0 @@
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,,,,,
@@ -1,3 +0,0 @@
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,,,,,,,,
@@ -1,27 +0,0 @@
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
@@ -1,24 +0,0 @@
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
@@ -1,27 +0,0 @@
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
@@ -1,515 +0,0 @@
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-output-db2/test_jdbc_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
- if (!enabled) {
133
- return;
134
- }
135
-
136
- String table = "TEST_NUMBER";
137
-
138
- dropTable(table);
139
-
140
- test("/db2/yml/test-insert-number.yml");
141
-
142
- List<List<Object>> rows = select(table);
143
- assertEquals(3, rows.size());
144
- {
145
- List<Object> row = rows.get(0);
146
- assertEquals("A001", row.get(0));
147
- assertEquals(12345L, row.get(1));
148
- assertEquals(123456789L, row.get(2));
149
- assertEquals(123456789012L, row.get(3));
150
- assertEquals("123456.78", row.get(4));
151
- assertEquals("876543.21", row.get(5));
152
- assertEquals(1.23456D, row.get(6));
153
- assertEquals(1.23456789012D, row.get(7));
154
- assertEquals(3.45678901234D, row.get(8));
155
- }
156
- {
157
- List<Object> row = rows.get(1);
158
- assertEquals("A002", row.get(0));
159
- assertEquals(-9999L, row.get(1));
160
- assertEquals(-999999999L, row.get(2));
161
- assertEquals(-999999999999L, row.get(3));
162
- assertEquals("-999999.99", row.get(4));
163
- assertEquals("-999999.99", row.get(5));
164
- assertEquals(-9.999999D, row.get(6));
165
- assertEquals(-9.999999D, row.get(7));
166
- assertEquals(-9.99999999999999D, row.get(8));
167
- }
168
- {
169
- List<Object> row = rows.get(2);
170
- assertEquals("A003", row.get(0));
171
- assertEquals(null, row.get(1));
172
- assertEquals(null, row.get(2));
173
- assertEquals(null, row.get(3));
174
- assertEquals(null, row.get(4));
175
- assertEquals(null, row.get(5));
176
- assertEquals(null, row.get(6));
177
- assertEquals(null, row.get(7));
178
- assertEquals(null, row.get(8));
179
- }
180
- }
181
-
182
- @Test
183
- public void testInsertCreateChar() throws Exception
184
- {
185
- String table = "TEST_CHAR";
186
-
187
- dropTable(table);
188
-
189
- test("/db2/yml/test-insert-char.yml");
190
-
191
- assertCharTable(table, true, 0);
192
- }
193
-
194
- @Test
195
- public void testInsertCreateDateTime() throws Exception
196
- {
197
- String table = "TEST_DATETIME";
198
-
199
- dropTable(table);
200
-
201
- test("/db2/yml/test-insert-datetime.yml");
202
-
203
- assertDateTimeTable(table, 0);
204
- }
205
-
206
- @Test
207
- public void testTruncateInsert() throws Exception
208
- {
209
- String table = "TEST_NUMBER";
210
-
211
- dropTable(table);
212
- createNumberTable(table);
213
-
214
- test("/db2/yml/test-truncate-insert.yml");
215
-
216
- assertNumberTable(table, 0);
217
- }
218
-
219
- @Test
220
- public void testReplace() throws Exception
221
- {
222
- String table = "TEST_CHAR";
223
-
224
- dropTable(table);
225
- createCharTable(table);
226
-
227
- test("/db2/yml/test-replace.yml");
228
-
229
- assertCharTable(table, true, 0);
230
- }
231
-
232
- @Test
233
- public void testReplaceCreate() throws Exception
234
- {
235
- String table = "TEST_CHAR";
236
-
237
- dropTable(table);
238
-
239
- test("/db2/yml/test-replace.yml");
240
-
241
- assertCharTable(table, true, 0);
242
- }
243
-
244
- @Test
245
- public void testReplaceLongName() throws Exception
246
- {
247
- // 128 characters
248
- String table = "TEST_CHAR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678";
249
-
250
- dropTable(table);
251
- createCharTable(table);
252
-
253
- test("/db2/yml/test-replace-long-name.yml");
254
-
255
- assertCharTable(table, true, 0);
256
- }
257
-
258
-
259
- @Override
260
- protected Object getValue(ResultSet resultSet, int index) throws SQLException {
261
- Object value = super.getValue(resultSet, index);
262
- if (value instanceof Clob) {
263
- return resultSet.getString(index);
264
- }
265
- return value;
266
- }
267
-
268
- private java.sql.Date createDate(String s) throws ParseException
269
- {
270
- DateFormat format = new SimpleDateFormat("yyyy/MM/dd");
271
- Date date = format.parse(s);
272
- return new java.sql.Date(date.getTime());
273
- }
274
-
275
- private Timestamp createTimestamp(String s, int nanos) throws ParseException
276
- {
277
- DateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
278
- Date date = format.parse(s);
279
- Timestamp timestamp = new Timestamp(date.getTime());
280
- timestamp.setNanos(nanos);
281
- return timestamp;
282
- }
283
-
284
- private Time createTime(String s) throws ParseException
285
- {
286
- DateFormat format = new SimpleDateFormat("HH:mm:ss");
287
- Date date = format.parse(s);
288
- return new Time(date.getTime());
289
- }
290
-
291
- private void createNumberTable(String table) throws SQLException
292
- {
293
- String sql = String.format("CREATE TABLE %s ("
294
- + "ID CHAR(4) NOT NULL,"
295
- + "SMALLINT_ITEM SMALLINT,"
296
- + "INTEGER_ITEM INTEGER,"
297
- + "BIGINT_ITEM BIGINT,"
298
- + "DECIMAL_ITEM DECIMAL(8,2),"
299
- + "NUMERIC_ITEM NUMERIC(8,2),"
300
- + "REAL_ITEM REAL,"
301
- + "DOUBLE_ITEM DOUBLE,"
302
- + "FLOAT_ITEM FLOAT,"
303
- + "PRIMARY KEY (ID))", table);
304
- executeSQL(sql);
305
-
306
- executeSQL(String.format("INSERT INTO %s VALUES('9999',"
307
- + "NULL,"
308
- + "NULL,"
309
- + "NULL,"
310
- + "NULL,"
311
- + "NULL,"
312
- + "NULL,"
313
- + "NULL,"
314
- + "NULL)", table));
315
- }
316
-
317
- private void createCharTable(String table) throws SQLException
318
- {
319
- String sql = String.format("CREATE TABLE %s ("
320
- + "ID CHAR(4) NOT NULL,"
321
- + "CHAR_ITEM CHAR(4),"
322
- + "VARCHAR_ITEM VARCHAR(8),"
323
- + "CLOB_ITEM CLOB,"
324
- + "GRAPHIC_ITEM GRAPHIC(4),"
325
- + "VARGRAPHIC_ITEM VARGRAPHIC(8),"
326
- + "NCHAR_ITEM NCHAR(4),"
327
- + "NVARCHAR_ITEM NVARCHAR(8),"
328
- + "NCLOB_ITEM NCLOB,"
329
- + "PRIMARY KEY (ID))", table);
330
- executeSQL(sql);
331
-
332
- executeSQL(String.format("INSERT INTO %s VALUES('9999',"
333
- + "NULL,"
334
- + "NULL,"
335
- + "NULL,"
336
- + "NULL,"
337
- + "NULL,"
338
- + "NULL,"
339
- + "NULL,"
340
- + "NULL)", table));
341
- }
342
-
343
- private void createDateTimeTable(String table) throws SQLException
344
- {
345
- String sql = String.format("CREATE TABLE %s ("
346
- + "ID CHAR(4) NOT NULL,"
347
- + "DATE_ITEM DATE,"
348
- + "TIME_ITEM TIME,"
349
- + "TIMESTAMP_ITEM TIMESTAMP,"
350
- + "TIMESTAMP0_ITEM TIMESTAMP(0),"
351
- + "TIMESTAMP12_ITEM TIMESTAMP(12),"
352
- + "PRIMARY KEY (ID))", table);
353
- executeSQL(sql);
354
-
355
- executeSQL(String.format("INSERT INTO %s VALUES('9999',"
356
- + "NULL,"
357
- + "NULL,"
358
- + "NULL,"
359
- + "NULL,"
360
- + "NULL)", table));
361
- }
362
-
363
- private void assertNumberTable(String table) throws SQLException
364
- {
365
- assertNumberTable(table, 1);
366
- }
367
-
368
- private void assertNumberTable(String table, int skip) throws SQLException
369
- {
370
- if (!enabled) {
371
- return;
372
- }
373
-
374
- List<List<Object>> rows = select(table);
375
- assertEquals(skip + 3, rows.size());
376
- {
377
- List<Object> row = rows.get(skip + 0);
378
- assertEquals("A001", row.get(0));
379
- assertEquals(12345, row.get(1));
380
- assertEquals(123456789, row.get(2));
381
- assertEquals(123456789012L, row.get(3));
382
- assertEquals(new BigDecimal("123456.78"), row.get(4));
383
- assertEquals(new BigDecimal("876543.21"), row.get(5));
384
- assertEquals(1.23456F, row.get(6));
385
- assertEquals(1.23456789012D, row.get(7));
386
- assertEquals(3.45678901234D, row.get(8));
387
- }
388
- {
389
- List<Object> row = rows.get(skip + 1);
390
- assertEquals("A002", row.get(0));
391
- assertEquals(-9999, row.get(1));
392
- assertEquals(-999999999, row.get(2));
393
- assertEquals(-999999999999L, row.get(3));
394
- assertEquals(new BigDecimal("-999999.99"), row.get(4));
395
- assertEquals(new BigDecimal("-999999.99"), row.get(5));
396
- assertEquals(-9.999999F, row.get(6));
397
- assertEquals(-9.999999D, row.get(7));
398
- assertEquals(-9.99999999999999D, row.get(8));
399
- }
400
- {
401
- List<Object> row = rows.get(skip + 2);
402
- assertEquals("A003", row.get(0));
403
- assertEquals(null, row.get(1));
404
- assertEquals(null, row.get(2));
405
- assertEquals(null, row.get(3));
406
- assertEquals(null, row.get(4));
407
- assertEquals(null, row.get(5));
408
- assertEquals(null, row.get(6));
409
- assertEquals(null, row.get(7));
410
- assertEquals(null, row.get(8));
411
- }
412
- }
413
-
414
- private void assertCharTable(String table, boolean trimming) throws SQLException
415
- {
416
- assertCharTable(table, trimming, 1);
417
- }
418
-
419
- private void assertCharTable(String table, boolean trimming, int skip) throws SQLException
420
- {
421
- if (!enabled) {
422
- return;
423
- }
424
-
425
- List<List<Object>> rows = select(table);
426
- assertEquals(skip + 3, rows.size());
427
- {
428
- List<Object> row = rows.get(skip + 0);
429
- assertEquals("A001", row.get(0));
430
- assertEquals(trimming ? "aa" : "aa ", row.get(1));
431
- assertEquals("AA", row.get(2));
432
- assertEquals("aaaaaaaaaaaa", row.get(3));
433
- assertEquals(trimming? "ああ" : "ああ ", row.get(4));
434
- assertEquals("いいいい", row.get(5));
435
- assertEquals(trimming? "aa" : "aa ", row.get(6));
436
- assertEquals("AA", row.get(7));
437
- assertEquals("aaaaaaaa", row.get(8));
438
- }
439
- {
440
- List<Object> row = rows.get(skip + 1);
441
- assertEquals("A002", row.get(0));
442
- assertEquals("XXXX", row.get(1));
443
- assertEquals("XXXXXXXX", row.get(2));
444
- assertEquals("XXXXXXXXXXXXXXXX", row.get(3));
445
- assertEquals("XXXX", row.get(4));
446
- assertEquals("XXXXXXXX", row.get(5));
447
- assertEquals("XXXX", row.get(6));
448
- assertEquals("XXXXXXXX", row.get(7));
449
- assertEquals("XXXXXXXXXXXXXXXX", row.get(8));
450
- }
451
- {
452
- List<Object> row = rows.get(skip + 2);
453
- assertEquals("A003", row.get(0));
454
- assertEquals(null, row.get(1));
455
- assertEquals(null, row.get(2));
456
- assertEquals(null, row.get(3));
457
- assertEquals(null, row.get(4));
458
- assertEquals(null, row.get(5));
459
- assertEquals(null, row.get(6));
460
- assertEquals(null, row.get(7));
461
- assertEquals(null, row.get(8));
462
- }
463
- }
464
-
465
- private void assertDateTimeTable(String table) throws SQLException, ParseException
466
- {
467
- assertDateTimeTable(table, 1);
468
- }
469
-
470
- private void assertDateTimeTable(String table, int skip) throws SQLException, ParseException
471
- {
472
- if (!enabled) {
473
- return;
474
- }
475
-
476
- List<List<Object>> rows = select(table);
477
- assertEquals(skip + 3, rows.size());
478
- {
479
- List<Object> row = rows.get(skip + 0);
480
- assertEquals("A001", row.get(0));
481
- assertEquals(createDate("2016/09/08"), row.get(1));
482
- assertEquals(createTime("12:34:45"), row.get(2));
483
- assertEquals(createTimestamp("2016/09/09 12:34:45", 123456000), row.get(3));
484
- assertEquals(createTimestamp("2016/09/10 12:34:45", 0), row.get(4));
485
- // Embulk TimestampParser cannot parse values under microseconds.
486
- assertEquals(createTimestamp("2016/09/11 12:34:45", 123456000), row.get(5));
487
- }
488
- {
489
- List<Object> row = rows.get(skip + 1);
490
- assertEquals("A002", row.get(0));
491
- assertEquals(createDate("2016/12/31"), row.get(1));
492
- assertEquals(createTime("23:59:59"), row.get(2));
493
- assertEquals(createTimestamp("2016/12/31 23:59:59", 999999000), row.get(3));
494
- assertEquals(createTimestamp("2016/12/31 23:59:59", 0), row.get(4));
495
- assertEquals(createTimestamp("2016/12/31 23:59:59", 999999000), row.get(5));
496
- }
497
- {
498
- List<Object> row = rows.get(skip + 2);
499
- assertEquals("A003", row.get(0));
500
- assertEquals(null, row.get(1));
501
- assertEquals(null, row.get(2));
502
- assertEquals(null, row.get(3));
503
- assertEquals(null, row.get(4));
504
- assertEquals(null, row.get(5));
505
- }
506
- }
507
-
508
- @Override
509
- protected Connection connect() throws SQLException
510
- {
511
- return DriverManager.getConnection(String.format(ENGLISH, "jdbc:db2://%s:%d/%s", getHost(), getPort(), getDatabase()),
512
- getUser(), getPassword());
513
- }
514
-
515
- }