embulk-output-jdbc 0.4.1 → 0.4.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 +4 -4
- data/build.gradle +2 -2
- data/classpath/embulk-output-jdbc-0.4.2.jar +0 -0
- data/lib/embulk/output/jdbc.rb +3 -3
- data/src/main/java/org/embulk/output/JdbcOutputPlugin.java +137 -138
- data/src/main/java/org/embulk/output/jdbc/AbstractJdbcOutputPlugin.java +972 -973
- data/src/main/java/org/embulk/output/jdbc/BatchInsert.java +52 -53
- data/src/main/java/org/embulk/output/jdbc/JdbcColumn.java +116 -116
- data/src/main/java/org/embulk/output/jdbc/JdbcColumnOption.java +34 -34
- data/src/main/java/org/embulk/output/jdbc/JdbcOutputConnection.java +492 -492
- data/src/main/java/org/embulk/output/jdbc/JdbcOutputConnector.java +8 -8
- data/src/main/java/org/embulk/output/jdbc/JdbcSchema.java +60 -60
- data/src/main/java/org/embulk/output/jdbc/JdbcUtils.java +153 -155
- data/src/main/java/org/embulk/output/jdbc/StandardBatchInsert.java +200 -200
- data/src/main/java/org/embulk/output/jdbc/ToString.java +54 -54
- data/src/main/java/org/embulk/output/jdbc/ToStringMap.java +34 -35
- data/src/main/java/org/embulk/output/jdbc/setter/BigDecimalColumnSetter.java +68 -70
- data/src/main/java/org/embulk/output/jdbc/setter/BooleanColumnSetter.java +53 -54
- data/src/main/java/org/embulk/output/jdbc/setter/ByteColumnSetter.java +75 -76
- data/src/main/java/org/embulk/output/jdbc/setter/ColumnSetter.java +44 -45
- data/src/main/java/org/embulk/output/jdbc/setter/ColumnSetterFactory.java +196 -196
- data/src/main/java/org/embulk/output/jdbc/setter/ColumnSetterVisitor.java +95 -96
- data/src/main/java/org/embulk/output/jdbc/setter/DefaultValueSetter.java +48 -48
- data/src/main/java/org/embulk/output/jdbc/setter/DoubleColumnSetter.java +60 -61
- data/src/main/java/org/embulk/output/jdbc/setter/FloatColumnSetter.java +60 -61
- data/src/main/java/org/embulk/output/jdbc/setter/IntColumnSetter.java +75 -76
- data/src/main/java/org/embulk/output/jdbc/setter/LongColumnSetter.java +71 -72
- data/src/main/java/org/embulk/output/jdbc/setter/NStringColumnSetter.java +58 -59
- data/src/main/java/org/embulk/output/jdbc/setter/NullColumnSetter.java +53 -53
- data/src/main/java/org/embulk/output/jdbc/setter/NullDefaultValueSetter.java +105 -105
- data/src/main/java/org/embulk/output/jdbc/setter/PassThroughColumnSetter.java +58 -59
- data/src/main/java/org/embulk/output/jdbc/setter/ShortColumnSetter.java +75 -76
- data/src/main/java/org/embulk/output/jdbc/setter/SkipColumnSetter.java +43 -43
- data/src/main/java/org/embulk/output/jdbc/setter/SqlDateColumnSetter.java +58 -59
- data/src/main/java/org/embulk/output/jdbc/setter/SqlTimeColumnSetter.java +58 -59
- data/src/main/java/org/embulk/output/jdbc/setter/SqlTimestampColumnSetter.java +58 -58
- data/src/main/java/org/embulk/output/jdbc/setter/StringColumnSetter.java +58 -59
- data/src/test/java/org/embulk/output/TestJdbcOutputPlugin.java +5 -5
- metadata +3 -3
- data/classpath/embulk-output-jdbc-0.4.1.jar +0 -0
@@ -1,54 +1,54 @@
|
|
1
|
-
package org.embulk.output.jdbc;
|
2
|
-
|
3
|
-
import com.google.common.base.Optional;
|
4
|
-
import com.fasterxml.jackson.databind.JsonNode;
|
5
|
-
import com.fasterxml.jackson.databind.JsonMappingException;
|
6
|
-
import com.fasterxml.jackson.databind.node.NullNode;
|
7
|
-
import com.fasterxml.jackson.annotation.JsonCreator;
|
8
|
-
import com.fasterxml.jackson.annotation.JsonValue;
|
9
|
-
|
10
|
-
public class ToString
|
11
|
-
{
|
12
|
-
private final String string;
|
13
|
-
|
14
|
-
public ToString(String string)
|
15
|
-
{
|
16
|
-
this.string = string;
|
17
|
-
}
|
18
|
-
|
19
|
-
@JsonCreator
|
20
|
-
ToString(Optional<JsonNode> option) throws JsonMappingException
|
21
|
-
{
|
22
|
-
JsonNode node = option.or(NullNode.getInstance());
|
23
|
-
if (node.isTextual()) {
|
24
|
-
this.string = node.textValue();
|
25
|
-
} else if (node.isValueNode()) {
|
26
|
-
this.string = node.toString();
|
27
|
-
} else {
|
28
|
-
throw new JsonMappingException(String.format("Arrays and objects are invalid: '%s'", node));
|
29
|
-
}
|
30
|
-
}
|
31
|
-
|
32
|
-
@Override
|
33
|
-
public boolean equals(Object obj)
|
34
|
-
{
|
35
|
-
if (!(obj instanceof ToString)) {
|
36
|
-
return false;
|
37
|
-
}
|
38
|
-
ToString o = (ToString) obj;
|
39
|
-
return string.equals(o.string);
|
40
|
-
}
|
41
|
-
|
42
|
-
@Override
|
43
|
-
public int hashCode()
|
44
|
-
{
|
45
|
-
return string.hashCode();
|
46
|
-
}
|
47
|
-
|
48
|
-
@JsonValue
|
49
|
-
@Override
|
50
|
-
public String toString()
|
51
|
-
{
|
52
|
-
return string;
|
53
|
-
}
|
54
|
-
}
|
1
|
+
package org.embulk.output.jdbc;
|
2
|
+
|
3
|
+
import com.google.common.base.Optional;
|
4
|
+
import com.fasterxml.jackson.databind.JsonNode;
|
5
|
+
import com.fasterxml.jackson.databind.JsonMappingException;
|
6
|
+
import com.fasterxml.jackson.databind.node.NullNode;
|
7
|
+
import com.fasterxml.jackson.annotation.JsonCreator;
|
8
|
+
import com.fasterxml.jackson.annotation.JsonValue;
|
9
|
+
|
10
|
+
public class ToString
|
11
|
+
{
|
12
|
+
private final String string;
|
13
|
+
|
14
|
+
public ToString(String string)
|
15
|
+
{
|
16
|
+
this.string = string;
|
17
|
+
}
|
18
|
+
|
19
|
+
@JsonCreator
|
20
|
+
ToString(Optional<JsonNode> option) throws JsonMappingException
|
21
|
+
{
|
22
|
+
JsonNode node = option.or(NullNode.getInstance());
|
23
|
+
if (node.isTextual()) {
|
24
|
+
this.string = node.textValue();
|
25
|
+
} else if (node.isValueNode()) {
|
26
|
+
this.string = node.toString();
|
27
|
+
} else {
|
28
|
+
throw new JsonMappingException(String.format("Arrays and objects are invalid: '%s'", node));
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
@Override
|
33
|
+
public boolean equals(Object obj)
|
34
|
+
{
|
35
|
+
if (!(obj instanceof ToString)) {
|
36
|
+
return false;
|
37
|
+
}
|
38
|
+
ToString o = (ToString) obj;
|
39
|
+
return string.equals(o.string);
|
40
|
+
}
|
41
|
+
|
42
|
+
@Override
|
43
|
+
public int hashCode()
|
44
|
+
{
|
45
|
+
return string.hashCode();
|
46
|
+
}
|
47
|
+
|
48
|
+
@JsonValue
|
49
|
+
@Override
|
50
|
+
public String toString()
|
51
|
+
{
|
52
|
+
return string;
|
53
|
+
}
|
54
|
+
}
|
@@ -1,35 +1,34 @@
|
|
1
|
-
package org.embulk.output.jdbc;
|
2
|
-
|
3
|
-
import java.util.Map;
|
4
|
-
import java.util.HashMap;
|
5
|
-
import java.util.Properties;
|
6
|
-
import com.google.common.base.Function;
|
7
|
-
import com.google.common.collect.Maps;
|
8
|
-
import com.fasterxml.jackson.annotation.JsonCreator;
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
props
|
33
|
-
|
34
|
-
|
35
|
-
}
|
1
|
+
package org.embulk.output.jdbc;
|
2
|
+
|
3
|
+
import java.util.Map;
|
4
|
+
import java.util.HashMap;
|
5
|
+
import java.util.Properties;
|
6
|
+
import com.google.common.base.Function;
|
7
|
+
import com.google.common.collect.Maps;
|
8
|
+
import com.fasterxml.jackson.annotation.JsonCreator;
|
9
|
+
|
10
|
+
public class ToStringMap
|
11
|
+
extends HashMap<String, String>
|
12
|
+
{
|
13
|
+
@JsonCreator
|
14
|
+
ToStringMap(Map<String, ToString> map)
|
15
|
+
{
|
16
|
+
super(Maps.transformValues(map, new Function<ToString, String>() {
|
17
|
+
public String apply(ToString value)
|
18
|
+
{
|
19
|
+
if (value == null) {
|
20
|
+
return "null";
|
21
|
+
} else {
|
22
|
+
return value.toString();
|
23
|
+
}
|
24
|
+
}
|
25
|
+
}));
|
26
|
+
}
|
27
|
+
|
28
|
+
public Properties toProperties()
|
29
|
+
{
|
30
|
+
Properties props = new Properties();
|
31
|
+
props.putAll(this);
|
32
|
+
return props;
|
33
|
+
}
|
34
|
+
}
|
@@ -1,70 +1,68 @@
|
|
1
|
-
package org.embulk.output.jdbc.setter;
|
2
|
-
|
3
|
-
import java.math.BigDecimal;
|
4
|
-
import java.io.IOException;
|
5
|
-
import java.sql.SQLException;
|
6
|
-
import org.embulk.spi.
|
7
|
-
import org.embulk.
|
8
|
-
import org.embulk.
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
}
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
}
|
70
|
-
}
|
1
|
+
package org.embulk.output.jdbc.setter;
|
2
|
+
|
3
|
+
import java.math.BigDecimal;
|
4
|
+
import java.io.IOException;
|
5
|
+
import java.sql.SQLException;
|
6
|
+
import org.embulk.spi.time.Timestamp;
|
7
|
+
import org.embulk.output.jdbc.JdbcColumn;
|
8
|
+
import org.embulk.output.jdbc.BatchInsert;
|
9
|
+
|
10
|
+
public class BigDecimalColumnSetter
|
11
|
+
extends ColumnSetter
|
12
|
+
{
|
13
|
+
private static final BigDecimal ZERO = BigDecimal.valueOf(0L);
|
14
|
+
private static final BigDecimal ONE = BigDecimal.valueOf(1L);
|
15
|
+
|
16
|
+
public BigDecimalColumnSetter(BatchInsert batch, JdbcColumn column,
|
17
|
+
DefaultValueSetter defaultValue)
|
18
|
+
{
|
19
|
+
super(batch, column, defaultValue);
|
20
|
+
}
|
21
|
+
|
22
|
+
@Override
|
23
|
+
public void nullValue() throws IOException, SQLException
|
24
|
+
{
|
25
|
+
defaultValue.setBigDecimal();
|
26
|
+
}
|
27
|
+
|
28
|
+
@Override
|
29
|
+
public void booleanValue(boolean v) throws IOException, SQLException
|
30
|
+
{
|
31
|
+
batch.setBigDecimal(v ? ONE : ZERO);
|
32
|
+
}
|
33
|
+
|
34
|
+
@Override
|
35
|
+
public void longValue(long v) throws IOException, SQLException
|
36
|
+
{
|
37
|
+
batch.setBigDecimal(BigDecimal.valueOf(v));
|
38
|
+
}
|
39
|
+
|
40
|
+
@Override
|
41
|
+
public void doubleValue(double v) throws IOException, SQLException
|
42
|
+
{
|
43
|
+
if (Double.isNaN(v) || Double.isInfinite(v)) {
|
44
|
+
defaultValue.setBigDecimal();
|
45
|
+
} else {
|
46
|
+
batch.setBigDecimal(BigDecimal.valueOf(v));
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
@Override
|
51
|
+
public void stringValue(String v) throws IOException, SQLException
|
52
|
+
{
|
53
|
+
BigDecimal dv;
|
54
|
+
try {
|
55
|
+
dv = new BigDecimal(v);
|
56
|
+
} catch (NumberFormatException ex) {
|
57
|
+
defaultValue.setBigDecimal();
|
58
|
+
return;
|
59
|
+
}
|
60
|
+
batch.setBigDecimal(dv);
|
61
|
+
}
|
62
|
+
|
63
|
+
@Override
|
64
|
+
public void timestampValue(Timestamp v) throws IOException, SQLException
|
65
|
+
{
|
66
|
+
defaultValue.setBigDecimal();
|
67
|
+
}
|
68
|
+
}
|
@@ -1,54 +1,53 @@
|
|
1
|
-
package org.embulk.output.jdbc.setter;
|
2
|
-
|
3
|
-
import java.io.IOException;
|
4
|
-
import java.sql.SQLException;
|
5
|
-
import
|
6
|
-
import org.embulk.
|
7
|
-
import org.embulk.output.jdbc.
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
}
|
1
|
+
package org.embulk.output.jdbc.setter;
|
2
|
+
|
3
|
+
import java.io.IOException;
|
4
|
+
import java.sql.SQLException;
|
5
|
+
import org.embulk.spi.time.Timestamp;
|
6
|
+
import org.embulk.output.jdbc.JdbcColumn;
|
7
|
+
import org.embulk.output.jdbc.BatchInsert;
|
8
|
+
|
9
|
+
public class BooleanColumnSetter
|
10
|
+
extends ColumnSetter
|
11
|
+
{
|
12
|
+
public BooleanColumnSetter(BatchInsert batch, JdbcColumn column,
|
13
|
+
DefaultValueSetter defaultValue)
|
14
|
+
{
|
15
|
+
super(batch, column, defaultValue);
|
16
|
+
}
|
17
|
+
|
18
|
+
@Override
|
19
|
+
public void nullValue() throws IOException, SQLException
|
20
|
+
{
|
21
|
+
defaultValue.setBoolean();
|
22
|
+
}
|
23
|
+
|
24
|
+
@Override
|
25
|
+
public void booleanValue(boolean v) throws IOException, SQLException
|
26
|
+
{
|
27
|
+
batch.setBoolean(v);
|
28
|
+
}
|
29
|
+
|
30
|
+
@Override
|
31
|
+
public void longValue(long v) throws IOException, SQLException
|
32
|
+
{
|
33
|
+
batch.setBoolean(v > 0);
|
34
|
+
}
|
35
|
+
|
36
|
+
@Override
|
37
|
+
public void doubleValue(double v) throws IOException, SQLException
|
38
|
+
{
|
39
|
+
batch.setBoolean(v > 0.0);
|
40
|
+
}
|
41
|
+
|
42
|
+
@Override
|
43
|
+
public void stringValue(String v) throws IOException, SQLException
|
44
|
+
{
|
45
|
+
defaultValue.setBoolean();
|
46
|
+
}
|
47
|
+
|
48
|
+
@Override
|
49
|
+
public void timestampValue(Timestamp v) throws IOException, SQLException
|
50
|
+
{
|
51
|
+
defaultValue.setBoolean();
|
52
|
+
}
|
53
|
+
}
|
@@ -1,76 +1,75 @@
|
|
1
|
-
package org.embulk.output.jdbc.setter;
|
2
|
-
|
3
|
-
import java.io.IOException;
|
4
|
-
import java.sql.SQLException;
|
5
|
-
import java.math.RoundingMode;
|
6
|
-
import com.google.common.math.DoubleMath;
|
7
|
-
import org.embulk.spi.
|
8
|
-
import org.embulk.
|
9
|
-
import org.embulk.output.jdbc.
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
}
|
1
|
+
package org.embulk.output.jdbc.setter;
|
2
|
+
|
3
|
+
import java.io.IOException;
|
4
|
+
import java.sql.SQLException;
|
5
|
+
import java.math.RoundingMode;
|
6
|
+
import com.google.common.math.DoubleMath;
|
7
|
+
import org.embulk.spi.time.Timestamp;
|
8
|
+
import org.embulk.output.jdbc.JdbcColumn;
|
9
|
+
import org.embulk.output.jdbc.BatchInsert;
|
10
|
+
|
11
|
+
public class ByteColumnSetter
|
12
|
+
extends ColumnSetter
|
13
|
+
{
|
14
|
+
public ByteColumnSetter(BatchInsert batch, JdbcColumn column,
|
15
|
+
DefaultValueSetter defaultValue)
|
16
|
+
{
|
17
|
+
super(batch, column, defaultValue);
|
18
|
+
}
|
19
|
+
|
20
|
+
@Override
|
21
|
+
public void nullValue() throws IOException, SQLException
|
22
|
+
{
|
23
|
+
defaultValue.setByte();
|
24
|
+
}
|
25
|
+
|
26
|
+
@Override
|
27
|
+
public void booleanValue(boolean v) throws IOException, SQLException
|
28
|
+
{
|
29
|
+
batch.setByte(v ? (byte) 1 : (byte) 0);
|
30
|
+
}
|
31
|
+
|
32
|
+
@Override
|
33
|
+
public void longValue(long v) throws IOException, SQLException
|
34
|
+
{
|
35
|
+
if (v > Byte.MAX_VALUE || v < Byte.MIN_VALUE) {
|
36
|
+
defaultValue.setByte();
|
37
|
+
} else {
|
38
|
+
batch.setByte((byte) v);
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|
42
|
+
@Override
|
43
|
+
public void doubleValue(double v) throws IOException, SQLException
|
44
|
+
{
|
45
|
+
long lv;
|
46
|
+
try {
|
47
|
+
// TODO configurable rounding mode
|
48
|
+
lv = DoubleMath.roundToLong(v, RoundingMode.HALF_UP);
|
49
|
+
} catch (ArithmeticException ex) {
|
50
|
+
// NaN / Infinite / -Infinite
|
51
|
+
defaultValue.setByte();
|
52
|
+
return;
|
53
|
+
}
|
54
|
+
longValue(lv);
|
55
|
+
}
|
56
|
+
|
57
|
+
@Override
|
58
|
+
public void stringValue(String v) throws IOException, SQLException
|
59
|
+
{
|
60
|
+
byte sv;
|
61
|
+
try {
|
62
|
+
sv = Byte.parseByte(v);
|
63
|
+
} catch (NumberFormatException e) {
|
64
|
+
defaultValue.setByte();
|
65
|
+
return;
|
66
|
+
}
|
67
|
+
batch.setByte(sv);
|
68
|
+
}
|
69
|
+
|
70
|
+
@Override
|
71
|
+
public void timestampValue(Timestamp v) throws IOException, SQLException
|
72
|
+
{
|
73
|
+
defaultValue.setByte();
|
74
|
+
}
|
75
|
+
}
|