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.
- checksums.yaml +4 -4
- data/README.md +5 -5
- data/classpath/{embulk-output-db2-0.8.0.jar → embulk-output-db2-0.8.1.jar} +0 -0
- data/classpath/{embulk-output-jdbc-0.8.0.jar → embulk-output-jdbc-0.8.1.jar} +0 -0
- data/src/test/java/org/embulk/output/db2/BasicTest.java +164 -0
- data/src/test/java/org/embulk/output/db2/DB2Tests.java +106 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/setup.sql +78 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_char.csv +4 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_create_char_expected.txt +9 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_create_datetime_expected.txt +5 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_create_number_expected.txt +9 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_datetime.csv +4 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_char.yml +2 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_char_expected.txt +10 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_create_char.yml +2 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_create_datetime.yml +2 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_create_number.yml +2 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_datetime.yml +2 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_datetime_expected.txt +6 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_direct_char.yml +2 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_direct_datetime.yml +2 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_direct_number.yml +2 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_number.yml +2 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_insert_number_expected.txt +6 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_number.csv +4 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_number2.csv +4 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_replace.yml +2 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_replace_create.yml +2 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_replace_long_name.yml +2 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_truncate_insert.yml +2 -0
- data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_truncate_insert_expected.txt +5 -0
- metadata +31 -23
- data/out/test/db2/data/test-char.csv +0 -3
- data/out/test/db2/data/test-datetime.csv +0 -3
- data/out/test/db2/data/test-number.csv +0 -3
- data/out/test/db2/yml/test-insert-direct-char.yml +0 -27
- data/out/test/db2/yml/test-insert-direct-datetime.yml +0 -24
- data/out/test/db2/yml/test-insert-direct-number.yml +0 -27
- data/src/test/java/org/embulk/output/db2/DB2OutputPluginTest.java +0 -515
- data/src/test/resources/db2/data/test-char.csv +0 -3
- data/src/test/resources/db2/data/test-datetime.csv +0 -3
- data/src/test/resources/db2/data/test-number.csv +0 -3
- data/src/test/resources/db2/yml/test-insert-char.yml +0 -27
- data/src/test/resources/db2/yml/test-insert-datetime.yml +0 -24
- data/src/test/resources/db2/yml/test-insert-direct-char.yml +0 -27
- data/src/test/resources/db2/yml/test-insert-direct-datetime.yml +0 -24
- data/src/test/resources/db2/yml/test-insert-direct-number.yml +0 -27
- data/src/test/resources/db2/yml/test-insert-number.yml +0 -27
- data/src/test/resources/db2/yml/test-replace-long-name.yml +0 -27
- data/src/test/resources/db2/yml/test-replace.yml +0 -27
- data/src/test/resources/db2/yml/test-truncate-insert.yml +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 16e23e576f2cb4f5c40c1293ff88864b2286db77
|
4
|
+
data.tar.gz: c4858262889efa3a229a2045eaa3304ced7c9cc3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61d195750443e7fb567f24f811500fe8d44d884f8eb3049b9e60fe3d3d6aaf8dae7c4d51374af488f96586ca848935a50b64e41d5f3bec0b22572ffe4ccbcd9b
|
7
|
+
data.tar.gz: b4fb62f8e75b6dc070db8fe4e2c951ece38b92cd5d6a45fc51bc15de26619b746ef1dce999f776351ad8dadb9d9076fdb1d7f83c7fcb633585e779f02d0dd84a
|
data/README.md
CHANGED
@@ -18,12 +18,12 @@ DB2 output plugins for Embulk loads records to DB2.
|
|
18
18
|
- **database**: destination database name (string, required)
|
19
19
|
- **schema**: destination schema name (string, default: use the default schema)
|
20
20
|
- **table**: destination table name (string, required)
|
21
|
-
- **create_table_constraint
|
22
|
-
- **create_table_option
|
21
|
+
- **create_table_constraint**: table constraint added to `CREATE TABLE` statement, like `CREATE TABLE <table_name> (<column1> <type1>, <column2> <type2>, ..., <create_table_constraint>) <create_table_option>`.
|
22
|
+
- **create_table_option**: table option added to `CREATE TABLE` statement, like `CREATE TABLE <table_name> (<column1> <type1>, <column2> <type2>, ..., <create_table_constraint>) <create_table_option>`.
|
23
23
|
- **options**: extra connection properties (hash, default: {})
|
24
|
-
- **retry_limit
|
25
|
-
- **retry_wait
|
26
|
-
- **max_retry_wait
|
24
|
+
- **retry_limit**: max retry count for database operations (integer, default: 12)
|
25
|
+
- **retry_wait**: initial retry wait time in milliseconds (integer, default: 1000 (1 second))
|
26
|
+
- **max_retry_wait**: upper limit of retry wait, which will be doubled at every retry (integer, default: 1800000 (30 minutes))
|
27
27
|
- **mode**: "insert", "insert_direct", "truncate_insert" or "replace". See below. (string, required)
|
28
28
|
- **insert_method**: see below
|
29
29
|
- **batch_size**: size of a single batch insert (integer, default: 16777216)
|
Binary file
|
Binary file
|
@@ -0,0 +1,164 @@
|
|
1
|
+
package org.embulk.output.db2;
|
2
|
+
|
3
|
+
import static org.embulk.output.db2.DB2Tests.execute;
|
4
|
+
import static org.embulk.output.db2.DB2Tests.selectRecords;
|
5
|
+
import static org.hamcrest.Matchers.is;
|
6
|
+
import static org.junit.Assert.assertThat;
|
7
|
+
|
8
|
+
import java.io.File;
|
9
|
+
import java.net.URISyntaxException;
|
10
|
+
import java.net.URL;
|
11
|
+
import java.nio.file.FileSystems;
|
12
|
+
import java.nio.file.Path;
|
13
|
+
|
14
|
+
import org.embulk.config.ConfigSource;
|
15
|
+
import org.embulk.output.DB2OutputPlugin;
|
16
|
+
import org.embulk.spi.OutputPlugin;
|
17
|
+
import org.embulk.test.EmbulkTests;
|
18
|
+
import org.embulk.test.TestingEmbulk;
|
19
|
+
import org.junit.Before;
|
20
|
+
import org.junit.Rule;
|
21
|
+
import org.junit.Test;
|
22
|
+
|
23
|
+
import com.google.common.io.Resources;
|
24
|
+
|
25
|
+
public class BasicTest
|
26
|
+
{
|
27
|
+
private static final String BASIC_RESOURCE_PATH = "org/embulk/output/db2/test/expect/basic/";
|
28
|
+
|
29
|
+
private static ConfigSource loadYamlResource(TestingEmbulk embulk, String fileName)
|
30
|
+
{
|
31
|
+
return embulk.loadYamlResource(BASIC_RESOURCE_PATH + fileName);
|
32
|
+
}
|
33
|
+
|
34
|
+
private static String readResource(String fileName)
|
35
|
+
{
|
36
|
+
return EmbulkTests.readResource(BASIC_RESOURCE_PATH + fileName);
|
37
|
+
}
|
38
|
+
|
39
|
+
@Rule
|
40
|
+
public TestingEmbulk embulk = TestingEmbulk.builder()
|
41
|
+
.registerPlugin(OutputPlugin.class, "db2", DB2OutputPlugin.class)
|
42
|
+
.build();
|
43
|
+
|
44
|
+
private ConfigSource baseConfig;
|
45
|
+
|
46
|
+
@Before
|
47
|
+
public void setup() throws Exception
|
48
|
+
{
|
49
|
+
baseConfig = DB2Tests.baseConfig();
|
50
|
+
execute(BASIC_RESOURCE_PATH + "setup.sql"); // setup rows
|
51
|
+
}
|
52
|
+
|
53
|
+
@Test
|
54
|
+
public void testInsertChar() throws Exception
|
55
|
+
{
|
56
|
+
Path in1 = toPath("test_char.csv");
|
57
|
+
TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_char.yml")), in1);
|
58
|
+
assertThat(selectRecords(embulk, "TEST_CHAR"), is(readResource("test_insert_char_expected.txt")));
|
59
|
+
}
|
60
|
+
|
61
|
+
@Test
|
62
|
+
public void testInsertDirectChar() throws Exception
|
63
|
+
{
|
64
|
+
Path in1 = toPath("test_char.csv");
|
65
|
+
TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_direct_char.yml")), in1);
|
66
|
+
assertThat(selectRecords(embulk, "TEST_CHAR"), is(readResource("test_insert_char_expected.txt")));
|
67
|
+
}
|
68
|
+
|
69
|
+
@Test
|
70
|
+
public void testInsertCreateChar() throws Exception
|
71
|
+
{
|
72
|
+
Path in1 = toPath("test_char.csv");
|
73
|
+
TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_create_char.yml")), in1);
|
74
|
+
assertThat(selectRecords(embulk, "TEST_CHAR2"), is(readResource("test_create_char_expected.txt")));
|
75
|
+
}
|
76
|
+
|
77
|
+
@Test
|
78
|
+
public void testReplace() throws Exception
|
79
|
+
{
|
80
|
+
Path in1 = toPath("test_char.csv");
|
81
|
+
TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_replace.yml")), in1);
|
82
|
+
assertThat(selectRecords(embulk, "TEST_CHAR"), is(readResource("test_create_char_expected.txt")));
|
83
|
+
}
|
84
|
+
|
85
|
+
@Test
|
86
|
+
public void testReplaceCreate() throws Exception
|
87
|
+
{
|
88
|
+
Path in1 = toPath("test_char.csv");
|
89
|
+
TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_replace_create.yml")), in1);
|
90
|
+
assertThat(selectRecords(embulk, "TEST_CHAR2"), is(readResource("test_create_char_expected.txt")));
|
91
|
+
}
|
92
|
+
|
93
|
+
@Test
|
94
|
+
public void testReplaceLongName() throws Exception
|
95
|
+
{
|
96
|
+
// table name has 128 characters
|
97
|
+
Path in1 = toPath("test_char.csv");
|
98
|
+
TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_replace_long_name.yml")), in1);
|
99
|
+
assertThat(selectRecords(embulk, "TEST_CHAR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678"), is(readResource("test_create_char_expected.txt")));
|
100
|
+
}
|
101
|
+
|
102
|
+
@Test
|
103
|
+
public void testInsertNumber() throws Exception
|
104
|
+
{
|
105
|
+
Path in1 = toPath("test_number.csv");
|
106
|
+
TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_number.yml")), in1);
|
107
|
+
assertThat(selectRecords(embulk, "TEST_NUMBER"), is(readResource("test_insert_number_expected.txt")));
|
108
|
+
}
|
109
|
+
|
110
|
+
@Test
|
111
|
+
public void testInsertDirectNumber() throws Exception
|
112
|
+
{
|
113
|
+
Path in1 = toPath("test_number.csv");
|
114
|
+
TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_direct_number.yml")), in1);
|
115
|
+
assertThat(selectRecords(embulk, "TEST_NUMBER"), is(readResource("test_insert_number_expected.txt")));
|
116
|
+
}
|
117
|
+
|
118
|
+
@Test
|
119
|
+
public void testInsertCreateNumber() throws Exception
|
120
|
+
{
|
121
|
+
Path in1 = toPath("test_number.csv");
|
122
|
+
TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_create_number.yml")), in1);
|
123
|
+
assertThat(selectRecords(embulk, "TEST_NUMBER2"), is(readResource("test_create_number_expected.txt")));
|
124
|
+
}
|
125
|
+
|
126
|
+
@Test
|
127
|
+
public void testTruncateInsert() throws Exception
|
128
|
+
{
|
129
|
+
Path in1 = toPath("test_number.csv");
|
130
|
+
TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_truncate_insert.yml")), in1);
|
131
|
+
assertThat(selectRecords(embulk, "TEST_NUMBER"), is(readResource("test_truncate_insert_expected.txt")));
|
132
|
+
}
|
133
|
+
|
134
|
+
@Test
|
135
|
+
public void testInsertDateTime() throws Exception
|
136
|
+
{
|
137
|
+
Path in1 = toPath("test_datetime.csv");
|
138
|
+
TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_datetime.yml")), in1);
|
139
|
+
assertThat(selectRecords(embulk, "TEST_DATETIME"), is(readResource("test_insert_datetime_expected.txt")));
|
140
|
+
}
|
141
|
+
|
142
|
+
@Test
|
143
|
+
public void testInsertDirectDateTime() throws Exception
|
144
|
+
{
|
145
|
+
Path in1 = toPath("test_datetime.csv");
|
146
|
+
TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_direct_datetime.yml")), in1);
|
147
|
+
assertThat(selectRecords(embulk, "TEST_DATETIME"), is(readResource("test_insert_datetime_expected.txt")));
|
148
|
+
}
|
149
|
+
|
150
|
+
@Test
|
151
|
+
public void testInsertCreateDateTime() throws Exception
|
152
|
+
{
|
153
|
+
Path in1 = toPath("test_datetime.csv");
|
154
|
+
TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_insert_create_datetime.yml")), in1);
|
155
|
+
assertThat(selectRecords(embulk, "TEST_DATETIME2"), is(readResource("test_create_datetime_expected.txt")));
|
156
|
+
}
|
157
|
+
|
158
|
+
|
159
|
+
private Path toPath(String fileName) throws URISyntaxException
|
160
|
+
{
|
161
|
+
URL url = Resources.getResource(BASIC_RESOURCE_PATH + fileName);
|
162
|
+
return FileSystems.getDefault().getPath(new File(url.toURI()).getAbsolutePath());
|
163
|
+
}
|
164
|
+
}
|
@@ -0,0 +1,106 @@
|
|
1
|
+
package org.embulk.output.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
|
+
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.nio.file.Path;
|
13
|
+
import java.util.Arrays;
|
14
|
+
import java.util.Collections;
|
15
|
+
import java.util.List;
|
16
|
+
|
17
|
+
import org.embulk.config.ConfigSource;
|
18
|
+
import org.embulk.test.EmbulkTests;
|
19
|
+
import org.embulk.test.TestingEmbulk;
|
20
|
+
|
21
|
+
import com.google.common.base.Throwables;
|
22
|
+
import com.google.common.io.ByteStreams;
|
23
|
+
|
24
|
+
public class DB2Tests
|
25
|
+
{
|
26
|
+
public static ConfigSource baseConfig()
|
27
|
+
{
|
28
|
+
return EmbulkTests.config("EMBULK_OUTPUT_DB2_TEST_CONFIG");
|
29
|
+
}
|
30
|
+
|
31
|
+
public static void execute(String sqlName) throws Exception
|
32
|
+
{
|
33
|
+
// DB2Tests.excute takes a resource name of SQL file, doesn't take a SQL sentence as other XXXTests do.
|
34
|
+
// Because TestingEmbulk.createTempFile might create a file whose name contains ' ' and DB2 clpplus cannot read such a file.
|
35
|
+
// But if root directory name of embulk-input-db2 contains ' ', tests will fail for the same reason.
|
36
|
+
URL sqlUrl = DB2Tests.class.getResource("/" + sqlName);
|
37
|
+
execute(new File(sqlUrl.toURI()));
|
38
|
+
}
|
39
|
+
|
40
|
+
private static void execute(File sqlFile) throws Exception
|
41
|
+
{
|
42
|
+
ConfigSource config = baseConfig();
|
43
|
+
String host = config.get(String.class, "host");
|
44
|
+
String port = config.get(String.class, "port", "50000");
|
45
|
+
String user = config.get(String.class, "user");
|
46
|
+
String password = config.get(String.class, "password");
|
47
|
+
String database = config.get(String.class, "database");
|
48
|
+
|
49
|
+
boolean isWindows = File.separatorChar == '\\';
|
50
|
+
ProcessBuilder pb = new ProcessBuilder(
|
51
|
+
"clpplus." + (isWindows ? "bat" : "sh"),
|
52
|
+
user + "/" + password + "@" + host + ":" + port + "/" + database,
|
53
|
+
"@" + sqlFile.getAbsolutePath());
|
54
|
+
pb.redirectErrorStream(true);
|
55
|
+
int code;
|
56
|
+
try {
|
57
|
+
Process process = pb.start();
|
58
|
+
ByteStreams.copy(process.getInputStream(), System.out);
|
59
|
+
code = process.waitFor();
|
60
|
+
} catch (IOException | InterruptedException ex) {
|
61
|
+
throw Throwables.propagate(ex);
|
62
|
+
}
|
63
|
+
if (code != 0) {
|
64
|
+
throw new RuntimeException(String.format(ENGLISH,
|
65
|
+
"Command finished with non-zero exit code. Exit code is %d.", code));
|
66
|
+
}
|
67
|
+
}
|
68
|
+
|
69
|
+
public static String selectRecords(TestingEmbulk embulk, String tableName) throws Exception
|
70
|
+
{
|
71
|
+
Charset charset = Charset.forName("UTF8");
|
72
|
+
|
73
|
+
// cannot use TestingEmbulk.createTempFile because DB2 clpplus cannot read files whose names including ' '.
|
74
|
+
FileSystem fs = FileSystems.getDefault();
|
75
|
+
File tempDir = new File(DB2Tests.class.getResource("/org/embulk/output/db2/test").toURI());
|
76
|
+
|
77
|
+
//Path temp = embulk.createTempFile("txt");
|
78
|
+
Path temp = fs.getPath(new File(tempDir, "temp.txt").getAbsolutePath());
|
79
|
+
Files.deleteIfExists(temp);
|
80
|
+
|
81
|
+
//Path sql = embulk.createTempFile("sql");
|
82
|
+
Path sql = fs.getPath(new File(tempDir, "temp.sql").getAbsolutePath());
|
83
|
+
Files.write(sql,
|
84
|
+
Arrays.asList(
|
85
|
+
"SET LINESIZE 1000;",
|
86
|
+
"SPOOL " + temp.toString() + ";",
|
87
|
+
"SELECT * FROM " + tableName + " ORDER BY ID;",
|
88
|
+
"EXIT;"),
|
89
|
+
charset);
|
90
|
+
|
91
|
+
execute(sql.toFile());
|
92
|
+
|
93
|
+
List<String> lines = Files.readAllLines(temp, charset);
|
94
|
+
Collections.sort(lines);
|
95
|
+
StringBuilder sb = new StringBuilder();
|
96
|
+
for (String line : lines) {
|
97
|
+
line = line.trim();
|
98
|
+
if (line.isEmpty()) {
|
99
|
+
continue;
|
100
|
+
}
|
101
|
+
sb.append(line);
|
102
|
+
sb.append("\n");
|
103
|
+
}
|
104
|
+
return sb.toString();
|
105
|
+
}
|
106
|
+
}
|
@@ -0,0 +1,78 @@
|
|
1
|
+
DROP TABLE TEST_CHAR;
|
2
|
+
CREATE TABLE TEST_CHAR (
|
3
|
+
ID INT NOT NULL,
|
4
|
+
CHAR_ITEM CHAR(4),
|
5
|
+
VARCHAR_ITEM VARCHAR(8),
|
6
|
+
CLOB_ITEM CLOB,
|
7
|
+
GRAPHIC_ITEM GRAPHIC(4),
|
8
|
+
VARGRAPHIC_ITEM VARGRAPHIC(8),
|
9
|
+
NCHAR_ITEM NCHAR(4),
|
10
|
+
NVARCHAR_ITEM NVARCHAR(8),
|
11
|
+
NCLOB_ITEM NCLOB,
|
12
|
+
PRIMARY KEY (ID)
|
13
|
+
);
|
14
|
+
INSERT INTO TEST_CHAR VALUES(
|
15
|
+
9999,
|
16
|
+
NULL,
|
17
|
+
NULL,
|
18
|
+
NULL,
|
19
|
+
NULL,
|
20
|
+
NULL,
|
21
|
+
NULL,
|
22
|
+
NULL,
|
23
|
+
NULL
|
24
|
+
);
|
25
|
+
|
26
|
+
DROP TABLE TEST_CHAR2;
|
27
|
+
|
28
|
+
DROP TABLE TEST_CHAR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678;
|
29
|
+
|
30
|
+
DROP TABLE TEST_NUMBER;
|
31
|
+
CREATE TABLE TEST_NUMBER (
|
32
|
+
ID INT NOT NULL,
|
33
|
+
SMALLINT_ITEM SMALLINT,
|
34
|
+
INTEGER_ITEM INTEGER,
|
35
|
+
BIGINT_ITEM BIGINT,
|
36
|
+
DECIMAL_ITEM DECIMAL(8,2),
|
37
|
+
NUMERIC_ITEM NUMERIC(8,2),
|
38
|
+
REAL_ITEM REAL,
|
39
|
+
DOUBLE_ITEM DOUBLE,
|
40
|
+
FLOAT_ITEM FLOAT,
|
41
|
+
PRIMARY KEY (ID)
|
42
|
+
);
|
43
|
+
INSERT INTO TEST_NUMBER VALUES(
|
44
|
+
9999,
|
45
|
+
NULL,
|
46
|
+
NULL,
|
47
|
+
NULL,
|
48
|
+
NULL,
|
49
|
+
NULL,
|
50
|
+
NULL,
|
51
|
+
NULL,
|
52
|
+
NULL
|
53
|
+
);
|
54
|
+
|
55
|
+
DROP TABLE TEST_NUMBER2;
|
56
|
+
|
57
|
+
DROP TABLE TEST_DATETIME;
|
58
|
+
|
59
|
+
CREATE TABLE TEST_DATETIME (
|
60
|
+
ID CHAR(4) NOT NULL,
|
61
|
+
DATE_ITEM DATE,
|
62
|
+
TIME_ITEM TIME,
|
63
|
+
TIMESTAMP_ITEM TIMESTAMP,
|
64
|
+
TIMESTAMP0_ITEM TIMESTAMP(0),
|
65
|
+
TIMESTAMP12_ITEM TIMESTAMP(12),
|
66
|
+
PRIMARY KEY (ID)
|
67
|
+
);
|
68
|
+
INSERT INTO TEST_DATETIME VALUES(9999,
|
69
|
+
NULL,
|
70
|
+
NULL,
|
71
|
+
NULL,
|
72
|
+
NULL,
|
73
|
+
NULL
|
74
|
+
);
|
75
|
+
|
76
|
+
DROP TABLE TEST_DATETIME2;
|
77
|
+
|
78
|
+
EXIT;
|
@@ -0,0 +1,4 @@
|
|
1
|
+
ID:long,CHAR_ITEM:string,VARCHAR_ITEM:string,CLOB_ITEM:string,GRAPHIC_ITEM:string,VARGRAPHIC_ITEM:string,NCHAR_ITEM:string,NVARCHAR_ITEM:string,NCLOB_ITEM:string
|
2
|
+
1001,aa,AA,aaaaaaaaaaaa,ああ,いいいい,aa,AA,aaaaaaaa
|
3
|
+
1002,XXXX,XXXXXXXX,XXXXXXXXXXXXXXXX,XXXX,XXXXXXXX,XXXX,XXXXXXXX,XXXXXXXXXXXXXXXX
|
4
|
+
1003,,,,,,,,
|
@@ -0,0 +1,9 @@
|
|
1
|
+
ID CHAR_ITEM VARCHAR_ITEM CLOB_ITEM GRAPHIC_ITEM VARGRAPHIC_ITEM NCHAR_ITEM
|
2
|
+
1001 aa AA aaaaaaaaaaaa ああ いいいい aa
|
3
|
+
1002 XXXX XXXXXXXX XXXXXXXXXXXXXXXX XXXX XXXXXXXX XXXX
|
4
|
+
1003
|
5
|
+
----------------------- ------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------
|
6
|
+
------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------
|
7
|
+
NVARCHAR_ITEM NCLOB_ITEM
|
8
|
+
XXXXXXXX XXXXXXXXXXXXXXXX
|
9
|
+
AA aaaaaaaa
|
data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_create_datetime_expected.txt
ADDED
@@ -0,0 +1,5 @@
|
|
1
|
+
ID DATE_ITEM TIME_ITEM TIMESTAMP_ITEM TIMESTAMP0_ITEM TIMESTAMP12_ITEM
|
2
|
+
1001 2016-09-08 00:00:00.000000 2016-01-01 12:34:45.000000 2016-09-09 12:34:45.123456 2016-09-10 12:34:45.000000 2016-09-11 12:34:45.123456
|
3
|
+
1002 2016-12-31 00:00:00.000000 2016-01-01 23:59:59.000000 2016-12-31 23:59:59.999999 2016-12-31 23:59:59.000000 2016-12-31 23:59:59.999999
|
4
|
+
1003
|
5
|
+
----------------------- ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------
|
data/src/test/resources/org/embulk/output/db2/test/expect/basic/test_create_number_expected.txt
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
ID SMALLINT_ITEM INTEGER_ITEM BIGINT_ITEM DECIMAL_ITEM
|
2
|
+
1001 12345 123456789 123456789012 123456.78
|
3
|
+
1002 -9999 -999999999 -999999999999 -999999.99
|
4
|
+
1003
|
5
|
+
----------------------- ----------------------- ----------------------- ----------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
6
|
+
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------- -------------------------- --------------------------
|
7
|
+
-999999.99 -9.999999 -9.999999 -9.99999999999999
|
8
|
+
876543.21 1.23456 1.23456789012 3.45678901234
|
9
|
+
NUMERIC_ITEM REAL_ITEM DOUBLE_ITEM FLOAT_ITEM
|
@@ -0,0 +1,4 @@
|
|
1
|
+
ID:long,DATE_ITEM:timestamp,TIME_ITEM:timestamp,TIMESTAMP_ITEM:timestamp,TIMESTAMP0_ITEM:timestamp,TIMESTAMP12_ITEM:timestamp
|
2
|
+
1001,2016-09-08 00:00:00.000 +0000,2016-01-01 12:34:45.000 +0000,2016-09-09 12:34:45.123456 +0000,2016-09-10 12:34:45.000 +0000,2016-09-11 12:34:45.123456789012 +0000
|
3
|
+
1002,2016-12-31 00:00:00.000 +0000,2016-01-01 23:59:59.000 +0000,2016-12-31 23:59:59.999999 +0000,2016-12-31 23:59:59.000 +0000,2016-12-31 23:59:59.999999999999 +0000
|
4
|
+
1003,,,,,
|
@@ -0,0 +1,10 @@
|
|
1
|
+
ID CHAR_ITEM VARCHAR_ITEM CLOB_ITEM GRAPHIC_ITEM VARGRAPHIC_ITEM NCHAR_ITEM NVARCHAR_ITEM
|
2
|
+
1001 aa AA aaaaaaaaaaaa ああ いいいい aa AA
|
3
|
+
1002 XXXX XXXXXXXX XXXXXXXXXXXXXXXX XXXX XXXXXXXX XXXX XXXXXXXX
|
4
|
+
1003
|
5
|
+
9999
|
6
|
+
------------- ---------- ------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------- ---------------- ------------------- -------------------------------------
|
7
|
+
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
8
|
+
NCLOB_ITEM
|
9
|
+
XXXXXXXXXXXXXXXX
|
10
|
+
aaaaaaaa
|