embulk-input-db2 0.8.0 → 0.8.1
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/build.gradle +1 -2
- data/classpath/{embulk-input-db2-0.8.0.jar → embulk-input-db2-0.8.1.jar} +0 -0
- data/classpath/embulk-input-jdbc-0.8.1.jar +0 -0
- data/src/test/java/org/embulk/input/db2/BasicTest.java +75 -0
- data/src/test/java/org/embulk/input/db2/DB2Tests.java +55 -0
- data/src/test/resources/org/embulk/input/db2/test/expect/basic/setup.sql +111 -0
- data/src/test/resources/org/embulk/input/db2/test/expect/basic/test_datetime_config.yml +3 -0
- data/src/test/resources/org/embulk/input/db2/test/expect/basic/test_datetime_expected.csv +2 -0
- data/src/test/resources/org/embulk/input/db2/test/expect/basic/test_datetime_expected.diff +2 -0
- data/src/test/resources/org/embulk/input/db2/test/expect/basic/test_number_config.yml +3 -0
- data/src/test/resources/org/embulk/input/db2/test/expect/basic/test_number_expected.csv +3 -0
- data/src/test/resources/org/embulk/input/db2/test/expect/basic/test_number_expected.diff +2 -0
- data/src/test/resources/org/embulk/input/db2/test/expect/basic/test_string_config.yml +3 -0
- data/src/test/resources/org/embulk/input/db2/test/expect/basic/test_string_expected.csv +2 -0
- data/src/test/resources/org/embulk/input/db2/test/expect/basic/test_string_expected.diff +2 -0
- metadata +16 -8
- data/classpath/embulk-input-jdbc-0.8.0.jar +0 -0
- data/src/test/java/org/embulk/input/db2/DB2InputPluginTest.java +0 -290
- data/src/test/resources/db2/yml/input-datetime.yml +0 -23
- data/src/test/resources/db2/yml/input-number.yml +0 -16
- data/src/test/resources/db2/yml/input-string.yml +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 06a5984b0d4a9cecdd028b112c0510b2732bf4e4
|
4
|
+
data.tar.gz: 044de0cd09805ad20b8bebccd91386a44c19d7da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: afc2af61dbe652c1b1305ae0a96c4e9949c97c02bd2ef624c14874e2055ac8da61072e5e11db78140adb1e946dce461f79f0f1430c371f723a69d034697fc999
|
7
|
+
data.tar.gz: 20dd2d46d6b85d170a896a10b441872966d32b17c8a9aa61360c297ec31f97228bb6873ccdd508cd892896bfb1f2e69efe53b77a41a5639eff5bf86e5eed7e04
|
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/db2jcc4.jar')
|
7
6
|
}
|
Binary file
|
Binary file
|
@@ -0,0 +1,75 @@
|
|
1
|
+
package org.embulk.input.db2;
|
2
|
+
|
3
|
+
import static org.embulk.input.db2.DB2Tests.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.DB2InputPlugin;
|
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/db2/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, "db2", DB2InputPlugin.class)
|
37
|
+
.build();
|
38
|
+
|
39
|
+
private ConfigSource baseConfig;
|
40
|
+
|
41
|
+
@Before
|
42
|
+
public void setup() throws Exception
|
43
|
+
{
|
44
|
+
baseConfig = DB2Tests.baseConfig();
|
45
|
+
execute(BASIC_RESOURCE_PATH + "setup.sql"); // setup rows
|
46
|
+
}
|
47
|
+
|
48
|
+
@Test
|
49
|
+
public void testString() throws Exception
|
50
|
+
{
|
51
|
+
Path out1 = embulk.createTempFile("csv");
|
52
|
+
TestingEmbulk.RunResult result1 = embulk.runInput(baseConfig.merge(loadYamlResource(embulk, "test_string_config.yml")), out1);
|
53
|
+
assertThat(readSortedFile(out1), is(readResource("test_string_expected.csv")));
|
54
|
+
assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_string_expected.diff")));
|
55
|
+
}
|
56
|
+
|
57
|
+
@Test
|
58
|
+
public void testNumber() throws Exception
|
59
|
+
{
|
60
|
+
Path out1 = embulk.createTempFile("csv");
|
61
|
+
TestingEmbulk.RunResult result1 = embulk.runInput(baseConfig.merge(loadYamlResource(embulk, "test_number_config.yml")), out1);
|
62
|
+
// (double)1.23456f becomes "1.2345600128173828", not "1.23456", because of difference of precision.
|
63
|
+
assertThat(readSortedFile(out1), is(readResource("test_number_expected.csv")));
|
64
|
+
assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_number_expected.diff")));
|
65
|
+
}
|
66
|
+
|
67
|
+
@Test
|
68
|
+
public void testDatetime() throws Exception
|
69
|
+
{
|
70
|
+
Path out1 = embulk.createTempFile("csv");
|
71
|
+
TestingEmbulk.RunResult result1 = embulk.runInput(baseConfig.merge(loadYamlResource(embulk, "test_datetime_config.yml")), out1);
|
72
|
+
assertThat(readSortedFile(out1), is(readResource("test_datetime_expected.csv")));
|
73
|
+
assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_datetime_expected.diff")));
|
74
|
+
}
|
75
|
+
}
|
@@ -0,0 +1,55 @@
|
|
1
|
+
package org.embulk.input.db2;
|
2
|
+
|
3
|
+
import static java.util.Locale.ENGLISH;
|
4
|
+
|
5
|
+
import java.io.File;
|
6
|
+
import java.io.IOException;
|
7
|
+
import java.net.URL;
|
8
|
+
|
9
|
+
import org.embulk.config.ConfigSource;
|
10
|
+
import org.embulk.test.EmbulkTests;
|
11
|
+
|
12
|
+
import com.google.common.base.Throwables;
|
13
|
+
import com.google.common.io.ByteStreams;
|
14
|
+
|
15
|
+
public class DB2Tests
|
16
|
+
{
|
17
|
+
public static ConfigSource baseConfig()
|
18
|
+
{
|
19
|
+
return EmbulkTests.config("EMBULK_INPUT_DB2_TEST_CONFIG");
|
20
|
+
}
|
21
|
+
|
22
|
+
public static void execute(String sqlName) throws Exception
|
23
|
+
{
|
24
|
+
// DB2Tests.excute takes a resource name of SQL file, doesn't take a SQL sentence as other XXXTests do.
|
25
|
+
// Because TestingEmbulk.createTempFile might create a file whose name contains ' ' and DB2 clpplus cannot read such a file.
|
26
|
+
// But if root directory name of embulk-input-db2 contains ' ', tests will fail for the same reason.
|
27
|
+
URL sqlRrl = DB2Tests.class.getResource("/" + sqlName);
|
28
|
+
|
29
|
+
ConfigSource config = baseConfig();
|
30
|
+
String host = config.get(String.class, "host");
|
31
|
+
String port = config.get(String.class, "port", "50000");
|
32
|
+
String user = config.get(String.class, "user");
|
33
|
+
String password = config.get(String.class, "password");
|
34
|
+
String database = config.get(String.class, "database");
|
35
|
+
|
36
|
+
boolean isWindows = File.separatorChar == '\\';
|
37
|
+
ProcessBuilder pb = new ProcessBuilder(
|
38
|
+
"clpplus." + (isWindows ? "bat" : "sh"),
|
39
|
+
user + "/" + password + "@" + host + ":" + port + "/" + database,
|
40
|
+
"@" + new File(sqlRrl.toURI()).getAbsolutePath());
|
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,111 @@
|
|
1
|
+
DROP TABLE TEST_STRING;
|
2
|
+
|
3
|
+
CREATE TABLE TEST_STRING (
|
4
|
+
ID CHAR(2) NOT NULL,
|
5
|
+
CHAR_ITEM CHAR(4),
|
6
|
+
VARCHAR_ITEM VARCHAR(8),
|
7
|
+
CLOB_ITEM CLOB,
|
8
|
+
GRAPHIC_ITEM GRAPHIC(4),
|
9
|
+
VARGRAPHIC_ITEM VARGRAPHIC(8),
|
10
|
+
NCHAR_ITEM NCHAR(4),
|
11
|
+
NVARCHAR_ITEM NVARCHAR(8),
|
12
|
+
NCLOB_ITEM NCLOB,
|
13
|
+
PRIMARY KEY (ID));
|
14
|
+
|
15
|
+
INSERT INTO TEST_STRING VALUES(
|
16
|
+
'10',
|
17
|
+
NULL,
|
18
|
+
NULL,
|
19
|
+
NULL,
|
20
|
+
NULL,
|
21
|
+
NULL,
|
22
|
+
NULL,
|
23
|
+
NULL,
|
24
|
+
NULL);
|
25
|
+
|
26
|
+
INSERT INTO TEST_STRING VALUES(
|
27
|
+
'11',
|
28
|
+
'aa',
|
29
|
+
'AA',
|
30
|
+
'aaaaaaaaaaaa',
|
31
|
+
'ああ',
|
32
|
+
'いいいい',
|
33
|
+
'aa',
|
34
|
+
'AA',
|
35
|
+
'aaaaaaaa');
|
36
|
+
|
37
|
+
DROP TABLE TEST_NUMBER;
|
38
|
+
|
39
|
+
CREATE TABLE TEST_NUMBER (
|
40
|
+
ID CHAR(2) NOT NULL,
|
41
|
+
SMALLINT_ITEM SMALLINT,
|
42
|
+
INTEGER_ITEM INTEGER,
|
43
|
+
BIGINT_ITEM BIGINT,
|
44
|
+
DECIMAL_ITEM DECIMAL(8,2),
|
45
|
+
NUMERIC_ITEM NUMERIC(8,2),
|
46
|
+
REAL_ITEM REAL,
|
47
|
+
DOUBLE_ITEM DOUBLE,
|
48
|
+
FLOAT_ITEM FLOAT,
|
49
|
+
PRIMARY KEY (ID));
|
50
|
+
|
51
|
+
INSERT INTO TEST_NUMBER VALUES(
|
52
|
+
'10',
|
53
|
+
NULL,
|
54
|
+
NULL,
|
55
|
+
NULL,
|
56
|
+
NULL,
|
57
|
+
NULL,
|
58
|
+
NULL,
|
59
|
+
NULL,
|
60
|
+
NULL);
|
61
|
+
|
62
|
+
INSERT INTO TEST_NUMBER VALUES(
|
63
|
+
'11',
|
64
|
+
12345,
|
65
|
+
123456789,
|
66
|
+
123456789012,
|
67
|
+
123456.78,
|
68
|
+
876543.21,
|
69
|
+
1.23456,
|
70
|
+
1.23456789012,
|
71
|
+
3.45678901234);
|
72
|
+
|
73
|
+
INSERT INTO TEST_NUMBER VALUES(
|
74
|
+
'12',
|
75
|
+
-12345,
|
76
|
+
-123456789,
|
77
|
+
-123456789012,
|
78
|
+
-123456.78,
|
79
|
+
-876543.21,
|
80
|
+
-1.23456,
|
81
|
+
-1.23456789012,
|
82
|
+
-3.45678901234);
|
83
|
+
|
84
|
+
DROP TABLE TEST_DATETIME;
|
85
|
+
|
86
|
+
CREATE TABLE TEST_DATETIME (
|
87
|
+
ID CHAR(2) NOT NULL,
|
88
|
+
DATE_ITEM DATE,
|
89
|
+
TIME_ITEM TIME,
|
90
|
+
TIMESTAMP_ITEM TIMESTAMP,
|
91
|
+
TIMESTAMP0_ITEM TIMESTAMP(0),
|
92
|
+
TIMESTAMP12_ITEM TIMESTAMP(12),
|
93
|
+
PRIMARY KEY (ID));
|
94
|
+
|
95
|
+
INSERT INTO TEST_DATETIME VALUES(
|
96
|
+
'10',
|
97
|
+
NULL,
|
98
|
+
NULL,
|
99
|
+
NULL,
|
100
|
+
NULL,
|
101
|
+
NULL);
|
102
|
+
|
103
|
+
INSERT INTO TEST_DATETIME VALUES(
|
104
|
+
'11',
|
105
|
+
TO_TIMESTAMP('2016-09-08', 'YYYY-MM-DD'),
|
106
|
+
TO_TIMESTAMP('12:34:45', 'HH24:MI:SS'),
|
107
|
+
TO_TIMESTAMP('2016-09-09 12:34:45.123456', 'YYYY-MM-DD HH24:MI:SS.FF6'),
|
108
|
+
TO_TIMESTAMP('2016-09-10 12:34:45', 'YYYY-MM-DD HH24:MI:SS'),
|
109
|
+
TO_TIMESTAMP('2016-09-11 12:34:45.123456789012', 'YYYY-MM-DD HH24:MI:SS.FF12'));
|
110
|
+
|
111
|
+
EXIT;
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: embulk-input-db2
|
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,15 +19,23 @@ extra_rdoc_files: []
|
|
19
19
|
files:
|
20
20
|
- README.md
|
21
21
|
- build.gradle
|
22
|
-
- classpath/embulk-input-db2-0.8.
|
23
|
-
- classpath/embulk-input-jdbc-0.8.
|
22
|
+
- classpath/embulk-input-db2-0.8.1.jar
|
23
|
+
- classpath/embulk-input-jdbc-0.8.1.jar
|
24
24
|
- lib/embulk/input/db2.rb
|
25
25
|
- src/main/java/org/embulk/input/DB2InputPlugin.java
|
26
26
|
- src/main/java/org/embulk/input/db2/DB2InputConnection.java
|
27
|
-
- src/test/java/org/embulk/input/db2/
|
28
|
-
- src/test/
|
29
|
-
- src/test/resources/db2/
|
30
|
-
- src/test/resources/db2/
|
27
|
+
- src/test/java/org/embulk/input/db2/BasicTest.java
|
28
|
+
- src/test/java/org/embulk/input/db2/DB2Tests.java
|
29
|
+
- src/test/resources/org/embulk/input/db2/test/expect/basic/setup.sql
|
30
|
+
- src/test/resources/org/embulk/input/db2/test/expect/basic/test_datetime_config.yml
|
31
|
+
- src/test/resources/org/embulk/input/db2/test/expect/basic/test_datetime_expected.csv
|
32
|
+
- src/test/resources/org/embulk/input/db2/test/expect/basic/test_datetime_expected.diff
|
33
|
+
- src/test/resources/org/embulk/input/db2/test/expect/basic/test_number_config.yml
|
34
|
+
- src/test/resources/org/embulk/input/db2/test/expect/basic/test_number_expected.csv
|
35
|
+
- src/test/resources/org/embulk/input/db2/test/expect/basic/test_number_expected.diff
|
36
|
+
- src/test/resources/org/embulk/input/db2/test/expect/basic/test_string_config.yml
|
37
|
+
- src/test/resources/org/embulk/input/db2/test/expect/basic/test_string_expected.csv
|
38
|
+
- src/test/resources/org/embulk/input/db2/test/expect/basic/test_string_expected.diff
|
31
39
|
homepage: https://github.com/embulk/embulk-input-jdbc
|
32
40
|
licenses:
|
33
41
|
- Apache 2.0
|
Binary file
|
@@ -1,290 +0,0 @@
|
|
1
|
-
package org.embulk.input.db2;
|
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.DB2InputPlugin;
|
13
|
-
import org.embulk.spi.InputPlugin;
|
14
|
-
import org.junit.Test;
|
15
|
-
|
16
|
-
public class DB2InputPluginTest extends AbstractJdbcInputPluginTest
|
17
|
-
{
|
18
|
-
@Override
|
19
|
-
protected void prepare() throws SQLException
|
20
|
-
{
|
21
|
-
tester.addPlugin(InputPlugin.class, "db2", DB2InputPlugin.class);
|
22
|
-
|
23
|
-
try {
|
24
|
-
Class.forName("com.ibm.db2.jcc.DB2Driver");
|
25
|
-
} catch (ClassNotFoundException e) {
|
26
|
-
System.err.println("Warning: you should put 'db2jcc4.jar' in 'embulk-input-db2/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 DB2 (server = %s, port = %d, database = %s, user = %s, password = %s).",
|
35
|
-
getHost(), getPort(), getDatabase(), getUser(), getPassword()));
|
36
|
-
return;
|
37
|
-
}
|
38
|
-
|
39
|
-
enabled = true;
|
40
|
-
|
41
|
-
String dropString = "DROP TABLE TEST_STRING";
|
42
|
-
executeSQL(dropString, true);
|
43
|
-
|
44
|
-
String createString =
|
45
|
-
"CREATE TABLE TEST_STRING ("
|
46
|
-
+ "ID CHAR(2) NOT NULL,"
|
47
|
-
+ "CHAR_ITEM CHAR(4),"
|
48
|
-
+ "VARCHAR_ITEM VARCHAR(8),"
|
49
|
-
+ "CLOB_ITEM CLOB,"
|
50
|
-
+ "GRAPHIC_ITEM GRAPHIC(4),"
|
51
|
-
+ "VARGRAPHIC_ITEM VARGRAPHIC(8),"
|
52
|
-
+ "NCHAR_ITEM NCHAR(4),"
|
53
|
-
+ "NVARCHAR_ITEM NVARCHAR(8),"
|
54
|
-
+ "NCLOB_ITEM NCLOB,"
|
55
|
-
+ "PRIMARY KEY (ID))";
|
56
|
-
executeSQL(createString);
|
57
|
-
|
58
|
-
String insertString1 =
|
59
|
-
"INSERT INTO TEST_STRING VALUES("
|
60
|
-
+ "'10',"
|
61
|
-
+ "NULL,"
|
62
|
-
+ "NULL,"
|
63
|
-
+ "NULL,"
|
64
|
-
+ "NULL,"
|
65
|
-
+ "NULL,"
|
66
|
-
+ "NULL,"
|
67
|
-
+ "NULL,"
|
68
|
-
+ "NULL)";
|
69
|
-
executeSQL(insertString1);
|
70
|
-
|
71
|
-
String insertString2 =
|
72
|
-
"INSERT INTO TEST_STRING VALUES("
|
73
|
-
+ "'11',"
|
74
|
-
+ "'aa',"
|
75
|
-
+ "'AA',"
|
76
|
-
+ "'aaaaaaaaaaaa',"
|
77
|
-
+ "'ああ',"
|
78
|
-
+ "'いいいい',"
|
79
|
-
+ "'aa',"
|
80
|
-
+ "'AA',"
|
81
|
-
+ "'aaaaaaaa')";
|
82
|
-
executeSQL(insertString2);
|
83
|
-
|
84
|
-
String dropNumber = "DROP TABLE TEST_NUMBER";
|
85
|
-
executeSQL(dropNumber, true);
|
86
|
-
|
87
|
-
String createNumber =
|
88
|
-
"CREATE TABLE TEST_NUMBER ("
|
89
|
-
+ "ID CHAR(2) NOT NULL,"
|
90
|
-
+ "SMALLINT_ITEM SMALLINT,"
|
91
|
-
+ "INTEGER_ITEM INTEGER,"
|
92
|
-
+ "BIGINT_ITEM BIGINT,"
|
93
|
-
+ "DECIMAL_ITEM DECIMAL(8,2),"
|
94
|
-
+ "NUMERIC_ITEM NUMERIC(8,2),"
|
95
|
-
+ "REAL_ITEM REAL,"
|
96
|
-
+ "DOUBLE_ITEM DOUBLE,"
|
97
|
-
+ "FLOAT_ITEM FLOAT,"
|
98
|
-
+ "PRIMARY KEY (ID))";
|
99
|
-
executeSQL(createNumber);
|
100
|
-
|
101
|
-
String insertNumber1 =
|
102
|
-
"INSERT INTO TEST_NUMBER VALUES("
|
103
|
-
+ "'10',"
|
104
|
-
+ "NULL,"
|
105
|
-
+ "NULL,"
|
106
|
-
+ "NULL,"
|
107
|
-
+ "NULL,"
|
108
|
-
+ "NULL,"
|
109
|
-
+ "NULL,"
|
110
|
-
+ "NULL,"
|
111
|
-
+ "NULL)";
|
112
|
-
executeSQL(insertNumber1);
|
113
|
-
|
114
|
-
String insertNumber2 =
|
115
|
-
"INSERT INTO TEST_NUMBER VALUES("
|
116
|
-
+ "'11',"
|
117
|
-
+ "12345,"
|
118
|
-
+ "123456789,"
|
119
|
-
+ "123456789012,"
|
120
|
-
+ "123456.78,"
|
121
|
-
+ "876543.21,"
|
122
|
-
+ "1.23456,"
|
123
|
-
+ "1.23456789012,"
|
124
|
-
+ "3.45678901234)";
|
125
|
-
executeSQL(insertNumber2);
|
126
|
-
|
127
|
-
String insertNumber3 =
|
128
|
-
"INSERT INTO TEST_NUMBER VALUES("
|
129
|
-
+ "'12',"
|
130
|
-
+ "-12345,"
|
131
|
-
+ "-123456789,"
|
132
|
-
+ "-123456789012,"
|
133
|
-
+ "-123456.78,"
|
134
|
-
+ "-876543.21,"
|
135
|
-
+ "-1.23456,"
|
136
|
-
+ "-1.23456789012,"
|
137
|
-
+ "-3.45678901234)";
|
138
|
-
executeSQL(insertNumber3);
|
139
|
-
|
140
|
-
String dropDateTime = "DROP TABLE TEST_DATETIME";
|
141
|
-
executeSQL(dropDateTime, true);
|
142
|
-
|
143
|
-
String createDateTime =
|
144
|
-
"CREATE TABLE TEST_DATETIME ("
|
145
|
-
+ "ID CHAR(2) NOT NULL,"
|
146
|
-
+ "DATE_ITEM DATE,"
|
147
|
-
+ "TIME_ITEM TIME,"
|
148
|
-
+ "TIMESTAMP_ITEM TIMESTAMP,"
|
149
|
-
+ "TIMESTAMP0_ITEM TIMESTAMP(0),"
|
150
|
-
+ "TIMESTAMP12_ITEM TIMESTAMP(12),"
|
151
|
-
+ "PRIMARY KEY (ID))";
|
152
|
-
executeSQL(createDateTime);
|
153
|
-
|
154
|
-
String insertDateTime1 =
|
155
|
-
"INSERT INTO TEST_DATETIME VALUES("
|
156
|
-
+ "'10',"
|
157
|
-
+ "NULL,"
|
158
|
-
+ "NULL,"
|
159
|
-
+ "NULL,"
|
160
|
-
+ "NULL,"
|
161
|
-
+ "NULL)";
|
162
|
-
executeSQL(insertDateTime1);
|
163
|
-
|
164
|
-
String insertDateTime2 =
|
165
|
-
"INSERT INTO TEST_DATETIME VALUES("
|
166
|
-
+ "'11',"
|
167
|
-
+ "'2016-09-08',"
|
168
|
-
+ "'12:34:45',"
|
169
|
-
+ "'2016-09-09 12:34:45.123456',"
|
170
|
-
+ "'2016-09-10 12:34:45',"
|
171
|
-
+ "'2016-09-11 12:34:45.123456789012')";
|
172
|
-
executeSQL(insertDateTime2);
|
173
|
-
|
174
|
-
/*
|
175
|
-
String create1 =
|
176
|
-
"create table test1 ("
|
177
|
-
+ "c1 tinyint,"
|
178
|
-
+ "c2 smallint,"
|
179
|
-
+ "c3 int,"
|
180
|
-
+ "c4 bigint,"
|
181
|
-
+ "c5 float,"
|
182
|
-
+ "c6 double,"
|
183
|
-
+ "c7 decimal(4,0),"
|
184
|
-
+ "c8 decimal(20,2),"
|
185
|
-
+ "c9 char(4),"
|
186
|
-
+ "c10 varchar(4),"
|
187
|
-
+ "c11 date,"
|
188
|
-
+ "c12 datetime,"
|
189
|
-
+ "c13 timestamp,"
|
190
|
-
+ "c14 time,"
|
191
|
-
+ "c15 datetime(6));";
|
192
|
-
executeSQL(create1);
|
193
|
-
|
194
|
-
String insert1 =
|
195
|
-
"insert into test1 values("
|
196
|
-
+ "null,"
|
197
|
-
+ "null,"
|
198
|
-
+ "null,"
|
199
|
-
+ "null,"
|
200
|
-
+ "null,"
|
201
|
-
+ "null,"
|
202
|
-
+ "null,"
|
203
|
-
+ "null,"
|
204
|
-
+ "null,"
|
205
|
-
+ "null,"
|
206
|
-
+ "null,"
|
207
|
-
+ "null,"
|
208
|
-
+ "'2015-06-04 23:45:06',"
|
209
|
-
+ "null,"
|
210
|
-
+ "null);";
|
211
|
-
executeSQL(insert1);
|
212
|
-
|
213
|
-
String insert2 =
|
214
|
-
"insert into test1 values("
|
215
|
-
+ "99,"
|
216
|
-
+ "9999,"
|
217
|
-
+ "-99999999,"
|
218
|
-
+ "-9999999999999999,"
|
219
|
-
+ "1.2345,"
|
220
|
-
+ "1.234567890123,"
|
221
|
-
+ "-1234,"
|
222
|
-
+ "123456789012345678.12,"
|
223
|
-
+ "'5678',"
|
224
|
-
+ "'xy',"
|
225
|
-
+ "'2015-06-04',"
|
226
|
-
+ "'2015-06-04 12:34:56',"
|
227
|
-
+ "'2015-06-04 23:45:06',"
|
228
|
-
+ "'08:04:02',"
|
229
|
-
+ "'2015-06-04 01:02:03.123456');";
|
230
|
-
executeSQL(insert2);
|
231
|
-
|
232
|
-
String drop2 = "drop table if exists test2";
|
233
|
-
executeSQL(drop2);
|
234
|
-
|
235
|
-
String create2 = "create table test2 (c1 bigint unsigned);";
|
236
|
-
executeSQL(create2);
|
237
|
-
|
238
|
-
String insert3 = "insert into test2 values(18446744073709551615)";
|
239
|
-
executeSQL(insert3);*/
|
240
|
-
}
|
241
|
-
|
242
|
-
@Test
|
243
|
-
public void testString() throws Exception
|
244
|
-
{
|
245
|
-
if (enabled) {
|
246
|
-
test("/db2/yml/input-string.yml");
|
247
|
-
assertEquals(Arrays.asList(
|
248
|
-
"ID,CHAR_ITEM,VARCHAR_ITEM,CLOB_ITEM,GRAPHIC_ITEM,VARGRAPHIC_ITEM,NCHAR_ITEM,NVARCHAR_ITEM,NCLOB_ITEM",
|
249
|
-
"10,,,,,,,,",
|
250
|
-
"11,aa ,AA,aaaaaaaaaaaa,ああ ,いいいい,aa ,AA,aaaaaaaa"),
|
251
|
-
read("db2-input000.00.csv"));
|
252
|
-
}
|
253
|
-
}
|
254
|
-
|
255
|
-
@Test
|
256
|
-
public void testNumber() throws Exception
|
257
|
-
{
|
258
|
-
if (enabled) {
|
259
|
-
test("/db2/yml/input-number.yml");
|
260
|
-
assertEquals(Arrays.asList(
|
261
|
-
"ID,SMALLINT_ITEM,INTEGER_ITEM,BIGINT_ITEM,DECIMAL_ITEM,NUMERIC_ITEM,REAL_ITEM,DOUBLE_ITEM,FLOAT_ITEM",
|
262
|
-
"10,,,,,,,,",
|
263
|
-
// (double)1.23456f becomes "1.2345600128173828", not "1.23456", because of difference of precision.
|
264
|
-
"11,12345,123456789,123456789012,123456.78,876543.21," + (double)1.23456f + ",1.23456789012,3.45678901234",
|
265
|
-
"12,-12345,-123456789,-123456789012,-123456.78,-876543.21," + (double)-1.23456f + ",-1.23456789012,-3.45678901234"),
|
266
|
-
read("db2-input000.00.csv"));
|
267
|
-
}
|
268
|
-
}
|
269
|
-
|
270
|
-
@Test
|
271
|
-
public void testDateTime() throws Exception
|
272
|
-
{
|
273
|
-
if (enabled) {
|
274
|
-
test("/db2/yml/input-datetime.yml");
|
275
|
-
assertEquals(Arrays.asList(
|
276
|
-
"ID,DATE_ITEM,TIME_ITEM,TIMESTAMP_ITEM,TIMESTAMP0_ITEM,TIMESTAMP12_ITEM",
|
277
|
-
"10,,,,,",
|
278
|
-
// precision of embulk timestamp is nano seconds
|
279
|
-
"11,2016/09/07,03-34-45,2016/09/09 03:34:45,2016/09/10 12:34:45,2016/09/11 03:34:45.123456789000"),
|
280
|
-
read("db2-input000.00.csv"));
|
281
|
-
}
|
282
|
-
}
|
283
|
-
|
284
|
-
@Override
|
285
|
-
protected Connection connect() throws SQLException
|
286
|
-
{
|
287
|
-
return DriverManager.getConnection(String.format(ENGLISH, "jdbc:db2://%s:%d/%s", getHost(), getPort(), getDatabase()),
|
288
|
-
getUser(), getPassword());
|
289
|
-
}
|
290
|
-
}
|
@@ -1,23 +0,0 @@
|
|
1
|
-
in:
|
2
|
-
type: db2
|
3
|
-
host: #host#
|
4
|
-
database: #database#
|
5
|
-
user: #user#
|
6
|
-
password: #password#
|
7
|
-
table: TEST_DATETIME
|
8
|
-
select: "*"
|
9
|
-
order_by: "id"
|
10
|
-
default_timezone: '+0900'
|
11
|
-
|
12
|
-
out:
|
13
|
-
type: file
|
14
|
-
path_prefix: db2-input
|
15
|
-
file_ext: csv
|
16
|
-
formatter:
|
17
|
-
type: csv
|
18
|
-
column_options:
|
19
|
-
DATE_ITEM: {format: '%Y/%m/%d'}
|
20
|
-
TIME_ITEM: {format: '%H-%M-%S'}
|
21
|
-
TIMESTAMP_ITEM: {format: '%Y/%m/%d %H:%M:%S'}
|
22
|
-
TIMESTAMP0_ITEM: {format: '%Y/%m/%d %H:%M:%S', timezone: '+0900'}
|
23
|
-
TIMESTAMP12_ITEM: {format: '%Y/%m/%d %H:%M:%S.%12N'}
|