embulk-input-oracle 0.7.1 → 0.7.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1b1f0fe82f9064bdd4cd422e03a0f8c51a50f348
4
- data.tar.gz: 74f6a02f17f087b7006c361a98cecc726ea00d18
3
+ metadata.gz: c21c11eb15503dc7d9b5a9622f624d31c5d61682
4
+ data.tar.gz: df349b10fe41bdd359ba49c7748f3726cc614516
5
5
  SHA512:
6
- metadata.gz: 80aeb8069f90eb31e50e40ccef27384c00181886d15249bf5e970dec184f9c455d75b7af3109e48ad279ec43657eeae6269a0aa55dd6ce3dfbe584b97ed8ff37
7
- data.tar.gz: a7b855b7921c020d21fbb63d027d0e7bb9b86ec8e0b54256e47e44227ab731179cb00b2809a49f9a0cc9118d7c513b5841f920ee606ea8ea4de958700a6a69d3
6
+ metadata.gz: c81d15fbbeb6db3cc7681860c314075aa868290deb6622753ca63a54cec6e18a220a2609b25c8fc3f2baa9d5f776fb98ac2bbb1486362d5f94ee3151664f36cc
7
+ data.tar.gz: d640fe70107b0a5b218cfc7437c7bc406b300d9f87f3cbdd45788429e229db465a6491a00f6b21311c351ce94ce293734870d0ca50cde447ee34ad9fe17ffaa6
data/README.md CHANGED
@@ -23,6 +23,7 @@ Oracle input plugins for Embulk loads records from Oracle.
23
23
  - **table**: destination table name (string, required)
24
24
  - **select**: comma-separated list of columns to select (string, default: "*")
25
25
  - **where**: WHERE condition to filter the rows (string, default: no-condition)
26
+ - **order_by**: name of the column that rows are sorted by (string, default: not sorted)
26
27
  - **fetch_rows**: number of rows to fetch one time (used for java.sql.Statement#setFetchSize) (integer, default: 10000)
27
28
  - **connect_timeout**: timeout for establishment of a database connection. (integer (seconds), default: 300)
28
29
  - **socket_timeout**: timeout for socket read operations. (integer (seconds), default: 1800)
@@ -0,0 +1,189 @@
1
+ package org.embulk.input.oracle;
2
+
3
+ import static org.junit.Assert.assertEquals;
4
+
5
+ import java.io.File;
6
+ import java.io.IOException;
7
+ import java.net.URISyntaxException;
8
+ import java.nio.charset.Charset;
9
+ import java.nio.file.FileSystem;
10
+ import java.nio.file.FileSystems;
11
+ import java.nio.file.Files;
12
+ import java.sql.Connection;
13
+ import java.sql.DriverManager;
14
+ import java.sql.SQLException;
15
+ import java.sql.Statement;
16
+ import java.util.Arrays;
17
+ import java.util.List;
18
+
19
+ import org.embulk.input.EmbulkPluginTester;
20
+ import org.embulk.input.OracleInputPlugin;
21
+ import org.embulk.spi.InputPlugin;
22
+ import org.junit.AfterClass;
23
+ import org.junit.BeforeClass;
24
+ import org.junit.Test;
25
+
26
+ public class OracleInputPluginTest
27
+ {
28
+ private static boolean prepared = false;
29
+ private static EmbulkPluginTester tester = new EmbulkPluginTester(InputPlugin.class, "oracle", OracleInputPlugin.class);
30
+
31
+ @BeforeClass
32
+ public static void prepare() throws SQLException
33
+ {
34
+ Connection connection;
35
+ try {
36
+ connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/TESTDB", "TEST_USER", "test_pw");
37
+ } catch (SQLException e) {
38
+ System.err.println(e);
39
+ System.err.println("Warning: prepare a schema on Oracle (database = 'TESTDB', user = 'TEST_USER', password = 'test_pw').");
40
+ return;
41
+ }
42
+
43
+ try {
44
+ try (Statement statement = connection.createStatement()) {
45
+ String drop1 = "DROP TABLE TEST1";
46
+ try {
47
+ statement.execute(drop1);
48
+ } catch (SQLException e) {
49
+ System.out.println(e);
50
+ }
51
+
52
+ String create1 =
53
+ "CREATE TABLE TEST1 ("
54
+ + "C1 DECIMAL(12,2),"
55
+ + "C2 CHAR(8),"
56
+ + "C3 VARCHAR2(8),"
57
+ + "C4 NVARCHAR2(8),"
58
+ + "C5 DATE,"
59
+ + "C6 TIMESTAMP,"
60
+ + "C7 TIMESTAMP(3))";
61
+ statement.execute(create1);
62
+
63
+ String insert1 =
64
+ "INSERT INTO TEST1 VALUES("
65
+ + "NULL,"
66
+ + "NULL,"
67
+ + "NULL,"
68
+ + "NULL,"
69
+ + "NULL,"
70
+ + "NULL,"
71
+ + "NULL)";
72
+ statement.executeUpdate(insert1);
73
+
74
+ String insert2 =
75
+ "INSERT INTO TEST1 VALUES("
76
+ + "-1234567890.12,"
77
+ + "'ABCDEF',"
78
+ + "'XYZ',"
79
+ + "'ABCDEFGH',"
80
+ + "'2015-06-04',"
81
+ + "'2015-06-05 23:45:06',"
82
+ + "'2015-06-06 23:45:06.789')";
83
+ statement.executeUpdate(insert2);
84
+ }
85
+
86
+ } finally {
87
+ connection.close();
88
+ prepared = true;
89
+ }
90
+ }
91
+
92
+ @AfterClass
93
+ public static void dispose()
94
+ {
95
+ tester.destroy();
96
+ }
97
+
98
+ @Test
99
+ public void test() throws Exception
100
+ {
101
+ if (prepared) {
102
+ tester.run(convertPath("/oracle/yml/input.yml"));
103
+ assertEquals(Arrays.asList(
104
+ "C1,C2,C3,C4,C5,C6,C7",
105
+ "-1.23456789012E9,ABCDEF ,XYZ,ABCDEFGH,2015-06-04,2015-06-05 23:45:06,2015-06-06 23:45:06.789",
106
+ ",,,,,,"),
107
+ read("oracle-input000.00.csv"));
108
+ }
109
+ }
110
+
111
+ @Test
112
+ public void testLower() throws Exception
113
+ {
114
+ if (prepared) {
115
+ tester.run(convertPath("/oracle/yml/input-lower.yml"));
116
+ assertEquals(Arrays.asList(
117
+ "C1,C2,C3,C4,C5,C6,C7",
118
+ "-1.23456789012E9,ABCDEF ,XYZ,ABCDEFGH,2015-06-04,2015-06-05 23:45:06,2015-06-06 23:45:06.789",
119
+ ",,,,,,"),
120
+ read("oracle-input000.00.csv"));
121
+ }
122
+ }
123
+
124
+ @Test
125
+ public void testQuery() throws Exception
126
+ {
127
+ if (prepared) {
128
+ tester.run(convertPath("/oracle/yml/input-query.yml"));
129
+ assertEquals(Arrays.asList(
130
+ "C1,C2,C3,C4,C5,C6,C7",
131
+ ",,,,,,",
132
+ "-1.23456789012E9,ABCDEF ,XYZ,ABCDEFGH,2015-06-04,2015-06-05 23:45:06,2015-06-06 23:45:06.789"),
133
+ read("oracle-input000.00.csv"));
134
+ }
135
+ }
136
+
137
+ @Test
138
+ public void testQueryLower() throws Exception
139
+ {
140
+ if (prepared) {
141
+ tester.run(convertPath("/oracle/yml/input-query-lower.yml"));
142
+ assertEquals(Arrays.asList(
143
+ "C1,C2,C3,C4,C5,C6,C7",
144
+ ",,,,,,",
145
+ "-1.23456789012E9,ABCDEF ,XYZ,ABCDEFGH,2015-06-04,2015-06-05 23:45:06,2015-06-06 23:45:06.789"),
146
+ read("oracle-input000.00.csv"));
147
+ }
148
+ }
149
+
150
+ @Test
151
+ public void testColumnOptions() throws Exception
152
+ {
153
+ if (prepared) {
154
+ tester.run(convertPath("/oracle/yml/input-column-options.yml"));
155
+ assertEquals(Arrays.asList(
156
+ "C1,C2,C3,C4,C5,C6,C7",
157
+ ",,,,,,",
158
+ "-1.23456789012E9,ABCDEF ,XYZ,ABCDEFGH,2015/06/04,2015/06/05 23:45:06,2015/06/06 23:45:06.789"),
159
+ read("oracle-input000.00.csv"));
160
+ }
161
+ }
162
+
163
+ @Test
164
+ public void testColumnOptionsLower() throws Exception
165
+ {
166
+ if (prepared) {
167
+ tester.run(convertPath("/oracle/yml/input-column-options-lower.yml"));
168
+ assertEquals(Arrays.asList(
169
+ "C1,C2,C3,C4,C5,C6,C7",
170
+ ",,,,,,",
171
+ "-1.23456789012E9,ABCDEF ,XYZ,ABCDEFGH,2015/06/04,2015/06/05 23:45:06,2015/06/06 23:45:06.789"),
172
+ read("oracle-input000.00.csv"));
173
+ }
174
+ }
175
+
176
+ private List<String> read(String path) throws IOException
177
+ {
178
+ FileSystem fs = FileSystems.getDefault();
179
+ return Files.readAllLines(fs.getPath(path), Charset.defaultCharset());
180
+ }
181
+
182
+ private String convertPath(String name) throws URISyntaxException
183
+ {
184
+ if (getClass().getResource(name) == null) {
185
+ return name;
186
+ }
187
+ return new File(getClass().getResource(name).toURI()).getAbsolutePath();
188
+ }
189
+ }
@@ -0,0 +1,19 @@
1
+ in:
2
+ type: oracle
3
+ host: localhost
4
+ database: TESTDB
5
+ user: TEST_USER
6
+ password: test_pw
7
+ table: TEST1
8
+ select: "*"
9
+ column_options:
10
+ c5: {type: string, timestamp_format: '%Y/%m/%d', timezone: "+0900"}
11
+ c6: {type: string, timestamp_format: '%Y/%m/%d %H:%M:%S', timezone: "+0900"}
12
+ c7: {type: string, timestamp_format: '%Y/%m/%d %H:%M:%S.%3N', timezone: "+0900"}
13
+
14
+ out:
15
+ type: file
16
+ path_prefix: oracle-input
17
+ file_ext: csv
18
+ formatter:
19
+ type: csv
@@ -0,0 +1,19 @@
1
+ in:
2
+ type: oracle
3
+ host: localhost
4
+ database: TESTDB
5
+ user: TEST_USER
6
+ password: test_pw
7
+ table: TEST1
8
+ select: "*"
9
+ column_options:
10
+ C5: {type: string, timestamp_format: '%Y/%m/%d', timezone: "+0900"}
11
+ C6: {type: string, timestamp_format: '%Y/%m/%d %H:%M:%S', timezone: "+0900"}
12
+ C7: {type: string, timestamp_format: '%Y/%m/%d %H:%M:%S.%3N', timezone: "+0900"}
13
+
14
+ out:
15
+ type: file
16
+ path_prefix: oracle-input
17
+ file_ext: csv
18
+ formatter:
19
+ type: csv
@@ -0,0 +1,20 @@
1
+ in:
2
+ type: oracle
3
+ host: localhost
4
+ database: TESTDB
5
+ user: TEST_USER
6
+ password: test_pw
7
+ table: test1
8
+ select: "c1, c2, c3, c4, c5, c6, c7"
9
+ order_by: c1
10
+
11
+ out:
12
+ type: file
13
+ path_prefix: oracle-input
14
+ file_ext: csv
15
+ formatter:
16
+ type: csv
17
+ column_options:
18
+ C5: {format: '%Y-%m-%d', timezone: '+0900'}
19
+ C6: {format: '%Y-%m-%d %H:%M:%S', timezone: '+0900'}
20
+ C7: {format: '%Y-%m-%d %H:%M:%S.%3N', timezone: '+0900'}
@@ -0,0 +1,18 @@
1
+ in:
2
+ type: oracle
3
+ host: localhost
4
+ database: TESTDB
5
+ user: TEST_USER
6
+ password: test_pw
7
+ query: "select c1, c2, c3, c4, c5, c6, c7 from test1"
8
+
9
+ out:
10
+ type: file
11
+ path_prefix: oracle-input
12
+ file_ext: csv
13
+ formatter:
14
+ type: csv
15
+ column_options:
16
+ C5: {format: '%Y-%m-%d', timezone: '+0900'}
17
+ C6: {format: '%Y-%m-%d %H:%M:%S', timezone: '+0900'}
18
+ C7: {format: '%Y-%m-%d %H:%M:%S.%3N', timezone: '+0900'}
@@ -0,0 +1,18 @@
1
+ in:
2
+ type: oracle
3
+ host: localhost
4
+ database: TESTDB
5
+ user: TEST_USER
6
+ password: test_pw
7
+ query: "SELECT C1, C2, C3, C4, C5, C6, C7 FROM TEST1"
8
+
9
+ out:
10
+ type: file
11
+ path_prefix: oracle-input
12
+ file_ext: csv
13
+ formatter:
14
+ type: csv
15
+ column_options:
16
+ C5: {format: '%Y-%m-%d', timezone: '+0900'}
17
+ C6: {format: '%Y-%m-%d %H:%M:%S', timezone: '+0900'}
18
+ C7: {format: '%Y-%m-%d %H:%M:%S.%3N', timezone: '+0900'}
@@ -0,0 +1,20 @@
1
+ in:
2
+ type: oracle
3
+ host: localhost
4
+ database: TESTDB
5
+ user: TEST_USER
6
+ password: test_pw
7
+ table: TEST1
8
+ select: "C1, C2, C3, C4, C5, C6, C7"
9
+ order_by: C1
10
+
11
+ out:
12
+ type: file
13
+ path_prefix: oracle-input
14
+ file_ext: csv
15
+ formatter:
16
+ type: csv
17
+ column_options:
18
+ C5: {format: '%Y-%m-%d', timezone: '+0900'}
19
+ C6: {format: '%Y-%m-%d %H:%M:%S', timezone: '+0900'}
20
+ C7: {format: '%Y-%m-%d %H:%M:%S.%3N', timezone: '+0900'}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-input-oracle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sadayuki Furuhashi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-06 00:00:00.000000000 Z
11
+ date: 2016-06-24 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Selects records from a table.
14
14
  email:
@@ -22,8 +22,15 @@ files:
22
22
  - lib/embulk/input/oracle.rb
23
23
  - src/main/java/org/embulk/input/OracleInputPlugin.java
24
24
  - src/main/java/org/embulk/input/oracle/OracleInputConnection.java
25
- - classpath/embulk-input-jdbc-0.7.1.jar
26
- - classpath/embulk-input-oracle-0.7.1.jar
25
+ - src/test/java/org/embulk/input/oracle/OracleInputPluginTest.java
26
+ - src/test/resources/oracle/yml/input-column-options-lower.yml
27
+ - src/test/resources/oracle/yml/input-column-options.yml
28
+ - src/test/resources/oracle/yml/input-lower.yml
29
+ - src/test/resources/oracle/yml/input-query-lower.yml
30
+ - src/test/resources/oracle/yml/input-query.yml
31
+ - src/test/resources/oracle/yml/input.yml
32
+ - classpath/embulk-input-jdbc-0.7.2.jar
33
+ - classpath/embulk-input-oracle-0.7.2.jar
27
34
  homepage: https://github.com/embulk/embulk-input-jdbc
28
35
  licenses:
29
36
  - Apache 2.0