embulk-input-oracle 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/build.gradle +1 -2
- data/classpath/embulk-input-jdbc-0.8.1.jar +0 -0
- data/classpath/embulk-input-oracle-0.8.1.jar +0 -0
- data/src/main/java/org/embulk/input/OracleInputPlugin.java +22 -0
- data/src/test/java/org/embulk/input/oracle/BasicTest.java +102 -0
- data/src/test/java/org/embulk/input/oracle/OracleTests.java +55 -0
- data/src/test/resources/org/embulk/input/oracle/test/expect/basic/setup.sql +34 -0
- data/src/test/resources/org/embulk/input/oracle/test/expect/basic/test_column_options_config.yml +7 -0
- data/src/test/resources/org/embulk/input/oracle/test/expect/basic/test_column_options_expected.csv +2 -0
- data/src/test/resources/org/embulk/input/oracle/test/expect/basic/test_column_options_expected.diff +2 -0
- data/src/test/resources/org/embulk/input/oracle/test/expect/basic/test_column_options_lower_config.yml +7 -0
- data/src/test/resources/org/embulk/input/oracle/test/expect/basic/test_config.yml +3 -0
- data/src/test/resources/org/embulk/input/oracle/test/expect/basic/test_expected.csv +2 -0
- data/src/test/resources/org/embulk/input/oracle/test/expect/basic/test_expected.diff +2 -0
- data/src/test/resources/org/embulk/input/oracle/test/expect/basic/test_lower_config.yml +3 -0
- data/src/test/resources/org/embulk/input/oracle/test/expect/basic/test_query_config.yml +1 -0
- data/src/test/resources/org/embulk/input/oracle/test/expect/basic/test_query_lower_config.yml +1 -0
- metadata +17 -11
- data/classpath/embulk-input-jdbc-0.8.0.jar +0 -0
- data/classpath/embulk-input-oracle-0.8.0.jar +0 -0
- data/src/test/java/org/embulk/input/oracle/OracleInputPluginTest.java +0 -169
- data/src/test/resources/oracle/yml/input-column-options-lower.yml +0 -20
- data/src/test/resources/oracle/yml/input-column-options.yml +0 -20
- data/src/test/resources/oracle/yml/input-lower.yml +0 -20
- data/src/test/resources/oracle/yml/input-query-lower.yml +0 -18
- data/src/test/resources/oracle/yml/input-query.yml +0 -18
- data/src/test/resources/oracle/yml/input.yml +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb579d4c4b917ec71f194fd39da7ae4c911a71dc
|
4
|
+
data.tar.gz: d8d6e7702de52adfb29f6371ea51dede761aab6d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad035e09b62d1a399a3821fc1471b3e429e16f4a9cf683eb32f043021cb81783daa651dd06af56afbe4896573b8f136d195e6af578cb0a7519176a0549a19481
|
7
|
+
data.tar.gz: ead95a3bcd4fa7e250f2dda59d34223fe1172e6ec82a3ea59aa3a98c174728d9470173834370e1478f13964a24ece7f919c04ff9cf7cb8bd2073d2a70b1556dc
|
data/README.md
CHANGED
@@ -17,6 +17,8 @@ Oracle input plugin for Embulk loads records from Oracle.
|
|
17
17
|
- **database**: destination database name (string, required if url is not set)
|
18
18
|
- **schema**: destination schema name (string, default: use the default schema). old Oracle JDBC driver (ojdbc6.jar) doesn't support.
|
19
19
|
- **url**: URL of the JDBC connection (string, optional)
|
20
|
+
- **tns_admin_path**: Directory which contains tnsname.ora (string, optional, must be present if **net_service_name** is defined)
|
21
|
+
- **net_service_name**: Oracle Net Service Name (string, optional)
|
20
22
|
- If you write SQL directly,
|
21
23
|
- **query**: SQL to run (string)
|
22
24
|
- If **query** is not set,
|
data/build.gradle
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
dependencies {
|
2
2
|
compile project(':embulk-input-jdbc')
|
3
3
|
|
4
|
-
testCompile
|
5
|
-
testCompile 'org.embulk:embulk-standards:0.8.8'
|
4
|
+
testCompile 'org.embulk:embulk-standards:0.8.15'
|
6
5
|
testCompile files('driver/ojdbc7.jar')
|
7
6
|
}
|
Binary file
|
Binary file
|
@@ -49,6 +49,14 @@ public class OracleInputPlugin
|
|
49
49
|
@Config("password")
|
50
50
|
@ConfigDefault("\"\"")
|
51
51
|
public String getPassword();
|
52
|
+
|
53
|
+
@Config("tns_admin_path")
|
54
|
+
@ConfigDefault("null")
|
55
|
+
public Optional<String> getTnsAdminPath();
|
56
|
+
|
57
|
+
@Config("net_service_name")
|
58
|
+
@ConfigDefault("null")
|
59
|
+
public Optional<String> getNetServiceName();
|
52
60
|
}
|
53
61
|
|
54
62
|
@Override
|
@@ -67,7 +75,21 @@ public class OracleInputPlugin
|
|
67
75
|
if (oracleTask.getHost().isPresent() || oracleTask.getDatabase().isPresent()) {
|
68
76
|
throw new IllegalArgumentException("'host', 'port' and 'database' parameters are invalid if 'url' parameter is set.");
|
69
77
|
}
|
78
|
+
if (oracleTask.getNetServiceName().isPresent() || oracleTask.getTnsAdminPath().isPresent()) {
|
79
|
+
throw new IllegalArgumentException("'net_service_name', 'tns_admin_path' parameters are invalid if 'url' parameter is set.");
|
80
|
+
}
|
70
81
|
url = oracleTask.getUrl().get();
|
82
|
+
} else if (oracleTask.getNetServiceName().isPresent()) {
|
83
|
+
if (!oracleTask.getTnsAdminPath().isPresent()) {
|
84
|
+
throw new IllegalArgumentException("'tns_admin_path' parameter is required if 'net_service_name' parameter is set.");
|
85
|
+
}
|
86
|
+
if (oracleTask.getHost().isPresent() || oracleTask.getDatabase().isPresent()) {
|
87
|
+
throw new IllegalArgumentException("'host' and 'database' parameters are invalid if 'net_service_name' and 'tns_admin_path' parameters are set.");
|
88
|
+
}
|
89
|
+
System.setProperty("oracle.net.tns_admin", oracleTask.getTnsAdminPath().get());
|
90
|
+
url = String.format("jdbc:oracle:thin:@%s", oracleTask.getNetServiceName().get());
|
91
|
+
} else if (oracleTask.getTnsAdminPath().isPresent() && !oracleTask.getNetServiceName().isPresent()) {
|
92
|
+
throw new IllegalArgumentException("'net_service_name' parameter is required if 'tns_admin_path' parameter is set.");
|
71
93
|
} else {
|
72
94
|
if (!oracleTask.getHost().isPresent()) {
|
73
95
|
throw new IllegalArgumentException("Field 'host' is not set.");
|
@@ -0,0 +1,102 @@
|
|
1
|
+
package org.embulk.input.oracle;
|
2
|
+
|
3
|
+
import static org.embulk.input.oracle.OracleTests.execute;
|
4
|
+
import static org.embulk.test.EmbulkTests.readSortedFile;
|
5
|
+
import static org.hamcrest.Matchers.is;
|
6
|
+
import static org.junit.Assert.assertThat;
|
7
|
+
|
8
|
+
import java.nio.file.Path;
|
9
|
+
|
10
|
+
import org.embulk.config.ConfigDiff;
|
11
|
+
import org.embulk.config.ConfigSource;
|
12
|
+
import org.embulk.input.OracleInputPlugin;
|
13
|
+
import org.embulk.spi.InputPlugin;
|
14
|
+
import org.embulk.test.EmbulkTests;
|
15
|
+
import org.embulk.test.TestingEmbulk;
|
16
|
+
import org.junit.Before;
|
17
|
+
import org.junit.Rule;
|
18
|
+
import org.junit.Test;
|
19
|
+
|
20
|
+
public class BasicTest
|
21
|
+
{
|
22
|
+
private static final String BASIC_RESOURCE_PATH = "org/embulk/input/oracle/test/expect/basic/";
|
23
|
+
|
24
|
+
private static ConfigSource loadYamlResource(TestingEmbulk embulk, String fileName)
|
25
|
+
{
|
26
|
+
return embulk.loadYamlResource(BASIC_RESOURCE_PATH + fileName);
|
27
|
+
}
|
28
|
+
|
29
|
+
private static String readResource(String fileName)
|
30
|
+
{
|
31
|
+
return EmbulkTests.readResource(BASIC_RESOURCE_PATH + fileName);
|
32
|
+
}
|
33
|
+
|
34
|
+
@Rule
|
35
|
+
public TestingEmbulk embulk = TestingEmbulk.builder()
|
36
|
+
.registerPlugin(InputPlugin.class, "oracle", OracleInputPlugin.class)
|
37
|
+
.build();
|
38
|
+
|
39
|
+
private ConfigSource baseConfig;
|
40
|
+
|
41
|
+
@Before
|
42
|
+
public void setup() throws Exception
|
43
|
+
{
|
44
|
+
baseConfig = OracleTests.baseConfig();
|
45
|
+
execute(embulk, readResource("setup.sql")); // setup rows
|
46
|
+
}
|
47
|
+
|
48
|
+
@Test
|
49
|
+
public void test() throws Exception
|
50
|
+
{
|
51
|
+
Path out1 = embulk.createTempFile("csv");
|
52
|
+
TestingEmbulk.RunResult result1 = embulk.runInput(baseConfig.merge(loadYamlResource(embulk, "test_config.yml")), out1);
|
53
|
+
assertThat(readSortedFile(out1), is(readResource("test_expected.csv")));
|
54
|
+
assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
|
55
|
+
}
|
56
|
+
|
57
|
+
@Test
|
58
|
+
public void testLower() throws Exception
|
59
|
+
{
|
60
|
+
Path out1 = embulk.createTempFile("csv");
|
61
|
+
TestingEmbulk.RunResult result1 = embulk.runInput(baseConfig.merge(loadYamlResource(embulk, "test_lower_config.yml")), out1);
|
62
|
+
assertThat(readSortedFile(out1), is(readResource("test_expected.csv")));
|
63
|
+
assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
|
64
|
+
}
|
65
|
+
|
66
|
+
@Test
|
67
|
+
public void testQuery() throws Exception
|
68
|
+
{
|
69
|
+
Path out1 = embulk.createTempFile("csv");
|
70
|
+
TestingEmbulk.RunResult result1 = embulk.runInput(baseConfig.merge(loadYamlResource(embulk, "test_query_config.yml")), out1);
|
71
|
+
assertThat(readSortedFile(out1), is(readResource("test_expected.csv")));
|
72
|
+
assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
|
73
|
+
}
|
74
|
+
|
75
|
+
@Test
|
76
|
+
public void testQueryLower() throws Exception
|
77
|
+
{
|
78
|
+
Path out1 = embulk.createTempFile("csv");
|
79
|
+
TestingEmbulk.RunResult result1 = embulk.runInput(baseConfig.merge(loadYamlResource(embulk, "test_query_lower_config.yml")), out1);
|
80
|
+
assertThat(readSortedFile(out1), is(readResource("test_expected.csv")));
|
81
|
+
assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
|
82
|
+
}
|
83
|
+
|
84
|
+
@Test
|
85
|
+
public void testColumnOptions() throws Exception
|
86
|
+
{
|
87
|
+
Path out1 = embulk.createTempFile("csv");
|
88
|
+
TestingEmbulk.RunResult result1 = embulk.runInput(baseConfig.merge(loadYamlResource(embulk, "test_column_options_config.yml")), out1);
|
89
|
+
assertThat(readSortedFile(out1), is(readResource("test_column_options_expected.csv")));
|
90
|
+
assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_column_options_expected.diff")));
|
91
|
+
}
|
92
|
+
|
93
|
+
@Test
|
94
|
+
public void testColumnOptionsLower() throws Exception
|
95
|
+
{
|
96
|
+
Path out1 = embulk.createTempFile("csv");
|
97
|
+
TestingEmbulk.RunResult result1 = embulk.runInput(baseConfig.merge(loadYamlResource(embulk, "test_column_options_lower_config.yml")), out1);
|
98
|
+
assertThat(readSortedFile(out1), is(readResource("test_column_options_expected.csv")));
|
99
|
+
assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_column_options_expected.diff")));
|
100
|
+
}
|
101
|
+
|
102
|
+
}
|
@@ -0,0 +1,55 @@
|
|
1
|
+
package org.embulk.input.oracle;
|
2
|
+
|
3
|
+
import static java.util.Locale.ENGLISH;
|
4
|
+
|
5
|
+
import java.io.IOException;
|
6
|
+
import java.nio.charset.Charset;
|
7
|
+
import java.nio.file.Files;
|
8
|
+
import java.nio.file.Path;
|
9
|
+
import java.util.Arrays;
|
10
|
+
|
11
|
+
import org.embulk.config.ConfigSource;
|
12
|
+
import org.embulk.test.EmbulkTests;
|
13
|
+
import org.embulk.test.TestingEmbulk;
|
14
|
+
|
15
|
+
import com.google.common.base.Throwables;
|
16
|
+
import com.google.common.io.ByteStreams;
|
17
|
+
|
18
|
+
public class OracleTests
|
19
|
+
{
|
20
|
+
public static ConfigSource baseConfig()
|
21
|
+
{
|
22
|
+
return EmbulkTests.config("EMBULK_INPUT_ORACLE_TEST_CONFIG");
|
23
|
+
}
|
24
|
+
|
25
|
+
public static void execute(TestingEmbulk embulk, String sql) throws IOException
|
26
|
+
{
|
27
|
+
Path sqlFile = embulk.createTempFile("sql");
|
28
|
+
Files.write(sqlFile, Arrays.asList(sql), Charset.forName("UTF8"));
|
29
|
+
|
30
|
+
ConfigSource config = baseConfig();
|
31
|
+
String host = config.get(String.class, "host");
|
32
|
+
String port = config.get(String.class, "port", "1521");
|
33
|
+
String user = config.get(String.class, "user");
|
34
|
+
String password = config.get(String.class, "password");
|
35
|
+
String database = config.get(String.class, "database");
|
36
|
+
ProcessBuilder pb = new ProcessBuilder(
|
37
|
+
"SQLPLUS",
|
38
|
+
user + "/" + password + "@" + host + ":" + port + "/" + database,
|
39
|
+
"@" + sqlFile.toFile().getAbsolutePath());
|
40
|
+
pb.environment().put("NLS_LANG", "American_America.UTF8");
|
41
|
+
pb.redirectErrorStream(true);
|
42
|
+
int code;
|
43
|
+
try {
|
44
|
+
Process process = pb.start();
|
45
|
+
ByteStreams.copy(process.getInputStream(), System.out);
|
46
|
+
code = process.waitFor();
|
47
|
+
} catch (IOException | InterruptedException ex) {
|
48
|
+
throw Throwables.propagate(ex);
|
49
|
+
}
|
50
|
+
if (code != 0) {
|
51
|
+
throw new RuntimeException(String.format(ENGLISH,
|
52
|
+
"Command finished with non-zero exit code. Exit code is %d.", code));
|
53
|
+
}
|
54
|
+
}
|
55
|
+
}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
DROP TABLE TEST1;
|
2
|
+
|
3
|
+
CREATE TABLE TEST1 (
|
4
|
+
ID CHAR(2),
|
5
|
+
C1 DECIMAL(12,2),
|
6
|
+
C2 CHAR(8),
|
7
|
+
C3 VARCHAR2(8),
|
8
|
+
C4 NVARCHAR2(8),
|
9
|
+
C5 DATE,
|
10
|
+
C6 TIMESTAMP,
|
11
|
+
C7 TIMESTAMP(3),
|
12
|
+
PRIMARY KEY(ID));
|
13
|
+
|
14
|
+
INSERT INTO TEST1 VALUES(
|
15
|
+
'10',
|
16
|
+
NULL,
|
17
|
+
NULL,
|
18
|
+
NULL,
|
19
|
+
NULL,
|
20
|
+
NULL,
|
21
|
+
NULL,
|
22
|
+
NULL);
|
23
|
+
|
24
|
+
INSERT INTO TEST1 VALUES(
|
25
|
+
'11',
|
26
|
+
-1234567890.12,
|
27
|
+
'ABCDEF',
|
28
|
+
'XYZ',
|
29
|
+
'ABCDEFGH',
|
30
|
+
TO_DATE('2015-06-04', 'YYYY-MM-DD'),
|
31
|
+
TO_TIMESTAMP('2015-06-05 23:45:06', 'YYYY-MM-DD HH24:MI:SS'),
|
32
|
+
TO_TIMESTAMP('2015-06-06 23:45:06.789', 'YYYY-MM-DD HH24:MI:SS.FF3'));
|
33
|
+
|
34
|
+
EXIT;
|
data/src/test/resources/org/embulk/input/oracle/test/expect/basic/test_column_options_config.yml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
table: TEST1
|
2
|
+
select: "*"
|
3
|
+
order_by: "ID"
|
4
|
+
column_options:
|
5
|
+
C5: {type: string, timestamp_format: '%Y/%m/%d', timezone: "+0900"}
|
6
|
+
C6: {type: string, timestamp_format: '%Y/%m/%d %H:%M:%S', timezone: "+0900"}
|
7
|
+
C7: {type: string, timestamp_format: '%Y/%m/%d %H:%M:%S.%3N', timezone: "+0900"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
table: TEST1
|
2
|
+
select: "*"
|
3
|
+
order_by: "ID"
|
4
|
+
column_options:
|
5
|
+
c5: {type: string, timestamp_format: '%Y/%m/%d', timezone: "+0900"}
|
6
|
+
c6: {type: string, timestamp_format: '%Y/%m/%d %H:%M:%S', timezone: "+0900"}
|
7
|
+
c7: {type: string, timestamp_format: '%Y/%m/%d %H:%M:%S.%3N', timezone: "+0900"}
|
@@ -0,0 +1 @@
|
|
1
|
+
query: "SELECT C1, C2, C3, C4, C5, C6, C7 FROM TEST1 ORDER BY C1"
|
@@ -0,0 +1 @@
|
|
1
|
+
query: "select c1, c2, c3, c4, c5, c6, c7 from test1 order by c1"
|
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.8.
|
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:
|
11
|
+
date: 2017-02-10 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Selects records from a table.
|
14
14
|
email:
|
@@ -19,18 +19,24 @@ extra_rdoc_files: []
|
|
19
19
|
files:
|
20
20
|
- README.md
|
21
21
|
- build.gradle
|
22
|
-
- classpath/embulk-input-jdbc-0.8.
|
23
|
-
- classpath/embulk-input-oracle-0.8.
|
22
|
+
- classpath/embulk-input-jdbc-0.8.1.jar
|
23
|
+
- classpath/embulk-input-oracle-0.8.1.jar
|
24
24
|
- lib/embulk/input/oracle.rb
|
25
25
|
- src/main/java/org/embulk/input/OracleInputPlugin.java
|
26
26
|
- src/main/java/org/embulk/input/oracle/OracleInputConnection.java
|
27
|
-
- src/test/java/org/embulk/input/oracle/
|
28
|
-
- src/test/
|
29
|
-
- src/test/resources/oracle/
|
30
|
-
- src/test/resources/oracle/
|
31
|
-
- src/test/resources/oracle/
|
32
|
-
- src/test/resources/oracle/
|
33
|
-
- src/test/resources/oracle/
|
27
|
+
- src/test/java/org/embulk/input/oracle/BasicTest.java
|
28
|
+
- src/test/java/org/embulk/input/oracle/OracleTests.java
|
29
|
+
- src/test/resources/org/embulk/input/oracle/test/expect/basic/setup.sql
|
30
|
+
- src/test/resources/org/embulk/input/oracle/test/expect/basic/test_column_options_config.yml
|
31
|
+
- src/test/resources/org/embulk/input/oracle/test/expect/basic/test_column_options_expected.csv
|
32
|
+
- src/test/resources/org/embulk/input/oracle/test/expect/basic/test_column_options_expected.diff
|
33
|
+
- src/test/resources/org/embulk/input/oracle/test/expect/basic/test_column_options_lower_config.yml
|
34
|
+
- src/test/resources/org/embulk/input/oracle/test/expect/basic/test_config.yml
|
35
|
+
- src/test/resources/org/embulk/input/oracle/test/expect/basic/test_expected.csv
|
36
|
+
- src/test/resources/org/embulk/input/oracle/test/expect/basic/test_expected.diff
|
37
|
+
- src/test/resources/org/embulk/input/oracle/test/expect/basic/test_lower_config.yml
|
38
|
+
- src/test/resources/org/embulk/input/oracle/test/expect/basic/test_query_config.yml
|
39
|
+
- src/test/resources/org/embulk/input/oracle/test/expect/basic/test_query_lower_config.yml
|
34
40
|
homepage: https://github.com/embulk/embulk-input-jdbc
|
35
41
|
licenses:
|
36
42
|
- Apache 2.0
|
Binary file
|
Binary file
|
@@ -1,169 +0,0 @@
|
|
1
|
-
package org.embulk.input.oracle;
|
2
|
-
|
3
|
-
import static java.util.Locale.ENGLISH;
|
4
|
-
import static org.junit.Assert.assertEquals;
|
5
|
-
|
6
|
-
import java.sql.Connection;
|
7
|
-
import java.sql.DriverManager;
|
8
|
-
import java.sql.SQLException;
|
9
|
-
import java.util.Arrays;
|
10
|
-
|
11
|
-
import org.embulk.input.AbstractJdbcInputPluginTest;
|
12
|
-
import org.embulk.input.OracleInputPlugin;
|
13
|
-
import org.embulk.spi.InputPlugin;
|
14
|
-
import org.junit.Test;
|
15
|
-
|
16
|
-
public class OracleInputPluginTest extends AbstractJdbcInputPluginTest
|
17
|
-
{
|
18
|
-
@Override
|
19
|
-
protected void prepare() throws SQLException
|
20
|
-
{
|
21
|
-
tester.addPlugin(InputPlugin.class, "oracle", OracleInputPlugin.class);
|
22
|
-
|
23
|
-
try {
|
24
|
-
Class.forName("oracle.jdbc.OracleDriver");
|
25
|
-
} catch (ClassNotFoundException e) {
|
26
|
-
System.err.println("Warning: you should put 'ojdbc7.jar' in 'embulk-input-oracle/driver' directory in order to test.");
|
27
|
-
return;
|
28
|
-
}
|
29
|
-
|
30
|
-
try {
|
31
|
-
connect();
|
32
|
-
} catch (SQLException e) {
|
33
|
-
System.err.println(e);
|
34
|
-
System.err.println(String.format(ENGLISH, "Warning: prepare a schema on Oracle 12c (server = %s, port = %d, database = %s, user = %s, password = %s, charset = UTF-8).",
|
35
|
-
getHost(), getPort(), getDatabase(), getUser(), getPassword()));
|
36
|
-
// for example
|
37
|
-
// CREATE USER TEST_USER IDENTIFIED BY "test_pw";
|
38
|
-
// GRANT DBA TO TEST_USER;
|
39
|
-
return;
|
40
|
-
}
|
41
|
-
|
42
|
-
enabled = true;
|
43
|
-
|
44
|
-
String drop1 = "DROP TABLE TEST1";
|
45
|
-
executeSQL(drop1, true);
|
46
|
-
|
47
|
-
String create1 =
|
48
|
-
"CREATE TABLE TEST1 ("
|
49
|
-
+ "ID CHAR(2),"
|
50
|
-
+ "C1 DECIMAL(12,2),"
|
51
|
-
+ "C2 CHAR(8),"
|
52
|
-
+ "C3 VARCHAR2(8),"
|
53
|
-
+ "C4 NVARCHAR2(8),"
|
54
|
-
+ "C5 DATE,"
|
55
|
-
+ "C6 TIMESTAMP,"
|
56
|
-
+ "C7 TIMESTAMP(3),"
|
57
|
-
+ "PRIMARY KEY(ID))";
|
58
|
-
executeSQL(create1);
|
59
|
-
|
60
|
-
String insert1 =
|
61
|
-
"INSERT INTO TEST1 VALUES("
|
62
|
-
+ "'10',"
|
63
|
-
+ "NULL,"
|
64
|
-
+ "NULL,"
|
65
|
-
+ "NULL,"
|
66
|
-
+ "NULL,"
|
67
|
-
+ "NULL,"
|
68
|
-
+ "NULL,"
|
69
|
-
+ "NULL)";
|
70
|
-
executeSQL(insert1);
|
71
|
-
|
72
|
-
String insert2 =
|
73
|
-
"INSERT INTO TEST1 VALUES("
|
74
|
-
+ "'11',"
|
75
|
-
+ "-1234567890.12,"
|
76
|
-
+ "'ABCDEF',"
|
77
|
-
+ "'XYZ',"
|
78
|
-
+ "'ABCDEFGH',"
|
79
|
-
+ "'2015-06-04',"
|
80
|
-
+ "'2015-06-05 23:45:06',"
|
81
|
-
+ "'2015-06-06 23:45:06.789')";
|
82
|
-
executeSQL(insert2);
|
83
|
-
}
|
84
|
-
|
85
|
-
@Test
|
86
|
-
public void test() throws Exception
|
87
|
-
{
|
88
|
-
if (enabled) {
|
89
|
-
test("/oracle/yml/input.yml");
|
90
|
-
assertEquals(Arrays.asList(
|
91
|
-
"C1,C2,C3,C4,C5,C6,C7",
|
92
|
-
"-1.23456789012E9,ABCDEF ,XYZ,ABCDEFGH,2015-06-04,2015-06-05 23:45:06,2015-06-06 23:45:06.789",
|
93
|
-
",,,,,,"),
|
94
|
-
read("oracle-input000.00.csv"));
|
95
|
-
}
|
96
|
-
}
|
97
|
-
|
98
|
-
@Test
|
99
|
-
public void testLower() throws Exception
|
100
|
-
{
|
101
|
-
if (enabled) {
|
102
|
-
test("/oracle/yml/input-lower.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 testQuery() throws Exception
|
113
|
-
{
|
114
|
-
if (enabled) {
|
115
|
-
test("/oracle/yml/input-query.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 testQueryLower() throws Exception
|
126
|
-
{
|
127
|
-
if (enabled) {
|
128
|
-
test("/oracle/yml/input-query-lower.yml");
|
129
|
-
assertEquals(Arrays.asList(
|
130
|
-
"C1,C2,C3,C4,C5,C6,C7",
|
131
|
-
"-1.23456789012E9,ABCDEF ,XYZ,ABCDEFGH,2015-06-04,2015-06-05 23:45:06,2015-06-06 23:45:06.789",
|
132
|
-
",,,,,,"),
|
133
|
-
read("oracle-input000.00.csv"));
|
134
|
-
}
|
135
|
-
}
|
136
|
-
|
137
|
-
@Test
|
138
|
-
public void testColumnOptions() throws Exception
|
139
|
-
{
|
140
|
-
if (enabled) {
|
141
|
-
test("/oracle/yml/input-column-options.yml");
|
142
|
-
assertEquals(Arrays.asList(
|
143
|
-
"ID,C1,C2,C3,C4,C5,C6,C7",
|
144
|
-
"10,,,,,,,",
|
145
|
-
"11,-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 testColumnOptionsLower() throws Exception
|
152
|
-
{
|
153
|
-
if (enabled) {
|
154
|
-
test("/oracle/yml/input-column-options-lower.yml");
|
155
|
-
assertEquals(Arrays.asList(
|
156
|
-
"ID,C1,C2,C3,C4,C5,C6,C7",
|
157
|
-
"10,,,,,,,",
|
158
|
-
"11,-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
|
-
@Override
|
164
|
-
protected Connection connect() throws SQLException
|
165
|
-
{
|
166
|
-
return DriverManager.getConnection(String.format(ENGLISH, "jdbc:oracle:thin:@%s:%d:%s", getHost(), getPort(), getDatabase()),
|
167
|
-
getUser(), getPassword());
|
168
|
-
}
|
169
|
-
}
|
@@ -1,20 +0,0 @@
|
|
1
|
-
in:
|
2
|
-
type: oracle
|
3
|
-
host: #host#
|
4
|
-
database: #database#
|
5
|
-
user: #user#
|
6
|
-
password: #password#
|
7
|
-
table: TEST1
|
8
|
-
select: "*"
|
9
|
-
order_by: "ID"
|
10
|
-
column_options:
|
11
|
-
c5: {type: string, timestamp_format: '%Y/%m/%d', timezone: "+0900"}
|
12
|
-
c6: {type: string, timestamp_format: '%Y/%m/%d %H:%M:%S', timezone: "+0900"}
|
13
|
-
c7: {type: string, timestamp_format: '%Y/%m/%d %H:%M:%S.%3N', timezone: "+0900"}
|
14
|
-
|
15
|
-
out:
|
16
|
-
type: file
|
17
|
-
path_prefix: oracle-input
|
18
|
-
file_ext: csv
|
19
|
-
formatter:
|
20
|
-
type: csv
|
@@ -1,20 +0,0 @@
|
|
1
|
-
in:
|
2
|
-
type: oracle
|
3
|
-
host: #host#
|
4
|
-
database: #database#
|
5
|
-
user: #user#
|
6
|
-
password: #password#
|
7
|
-
table: TEST1
|
8
|
-
select: "*"
|
9
|
-
order_by: "ID"
|
10
|
-
column_options:
|
11
|
-
C5: {type: string, timestamp_format: '%Y/%m/%d', timezone: "+0900"}
|
12
|
-
C6: {type: string, timestamp_format: '%Y/%m/%d %H:%M:%S', timezone: "+0900"}
|
13
|
-
C7: {type: string, timestamp_format: '%Y/%m/%d %H:%M:%S.%3N', timezone: "+0900"}
|
14
|
-
|
15
|
-
out:
|
16
|
-
type: file
|
17
|
-
path_prefix: oracle-input
|
18
|
-
file_ext: csv
|
19
|
-
formatter:
|
20
|
-
type: csv
|
@@ -1,20 +0,0 @@
|
|
1
|
-
in:
|
2
|
-
type: oracle
|
3
|
-
host: #host#
|
4
|
-
database: #database#
|
5
|
-
user: #user#
|
6
|
-
password: #password#
|
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'}
|
@@ -1,18 +0,0 @@
|
|
1
|
-
in:
|
2
|
-
type: oracle
|
3
|
-
host: #host#
|
4
|
-
database: #database#
|
5
|
-
user: #user#
|
6
|
-
password: #password#
|
7
|
-
query: "select c1, c2, c3, c4, c5, c6, c7 from test1 order by c1"
|
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'}
|
@@ -1,18 +0,0 @@
|
|
1
|
-
in:
|
2
|
-
type: oracle
|
3
|
-
host: #host#
|
4
|
-
database: #database#
|
5
|
-
user: #user#
|
6
|
-
password: #password#
|
7
|
-
query: "SELECT C1, C2, C3, C4, C5, C6, C7 FROM TEST1 ORDER BY C1"
|
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'}
|
@@ -1,20 +0,0 @@
|
|
1
|
-
in:
|
2
|
-
type: oracle
|
3
|
-
host: #host#
|
4
|
-
database: #database#
|
5
|
-
user: #user#
|
6
|
-
password: #password#
|
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'}
|