embulk-output-postgresql 0.8.2 → 0.8.3
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/README.md +2 -1
- data/build.gradle +1 -0
- data/classpath/embulk-output-jdbc-0.8.3.jar +0 -0
- data/classpath/embulk-output-postgresql-0.8.3.jar +0 -0
- data/src/main/java/org/embulk/output/PostgreSQLOutputPlugin.java +2 -2
- data/src/main/java/org/embulk/output/postgresql/AbstractPostgreSQLCopyBatchInsert.java +0 -9
- data/src/main/java/org/embulk/output/postgresql/PostgreSQLCopyBatchInsert.java +10 -3
- data/src/main/java/org/embulk/output/postgresql/PostgreSQLOutputConnection.java +1 -2
- data/src/main/java/org/embulk/output/postgresql/PostgreSQLOutputConnector.java +11 -5
- data/src/test/java/org/embulk/output/postgresql/BasicTest.java +103 -0
- data/src/test/java/org/embulk/output/postgresql/PostgreSQLTests.java +68 -0
- data/src/test/resources/org/embulk/output/postgresql/test/expect/basic/setup.sql +44 -0
- data/src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_json.csv +5 -0
- data/src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_json.yml +2 -0
- data/src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_json_expected.csv +4 -0
- data/src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_number.csv +5 -0
- data/src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_number.yml +2 -0
- data/src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_number_expected.csv +4 -0
- data/src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_string.csv +4 -0
- data/src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_string.yml +2 -0
- data/src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_string_expected.csv +3 -0
- data/src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_timestamp.csv +3 -0
- data/src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_timestamp.yml +2 -0
- data/src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_timestamp_expected.csv +2 -0
- metadata +19 -4
- data/classpath/embulk-output-jdbc-0.8.2.jar +0 -0
- data/classpath/embulk-output-postgresql-0.8.2.jar +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6905d4be0d280edee08d97a7a9a5fe4e93f6f93e
|
4
|
+
data.tar.gz: e25fcb5a9ba650b1ccbc636c8f7c432baa4b0c85
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a788977861a3fd4c194b8969795f4934f8c1b9bfa91d9ba9ca8860674aa147c9c8c358846da5d1a51ca9db877f2b84000161174df97027eec036ee3e46d3c8f8
|
7
|
+
data.tar.gz: 9f96b3b66f92bcdaa4202dca90ef537034527e2eaf7c95eed5703cadba09c0070fd4db3a36bd05c8f7c1454b4696f99ee844ae93e8322b577834ebfac781c597
|
data/README.md
CHANGED
@@ -21,8 +21,9 @@ PostgreSQL output plugin for Embulk loads records to PostgreSQL.
|
|
21
21
|
- **table**: destination table name (string, required)
|
22
22
|
- **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>`.
|
23
23
|
- **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>`.
|
24
|
+
- **transaction_isolation**: transaction isolation level for each connection ("read_uncommitted", "read_committed", "repeatable_read" or "serializable"). if not specified, database default value will be used.
|
24
25
|
- **options**: extra connection properties (hash, default: {})
|
25
|
-
- **retry_limit**: max retry count for database operations (integer, default: 12)
|
26
|
+
- **retry_limit**: max retry count for database operations (integer, default: 12). When intermediate table to create already created by another process, this plugin will retry with another table name to avoid collision.
|
26
27
|
- **retry_wait**: initial retry wait time in milliseconds (integer, default: 1000 (1 second))
|
27
28
|
- **max_retry_wait**: upper limit of retry wait, which will be doubled at every retry (integer, default: 1800000 (30 minutes))
|
28
29
|
- **mode**: "insert", "insert_direct", "truncate_insert", "replace", "merge" or "merge_direct". See below. (string, required)
|
data/build.gradle
CHANGED
Binary file
|
Binary file
|
@@ -77,7 +77,7 @@ public class PostgreSQLOutputPlugin
|
|
77
77
|
}
|
78
78
|
|
79
79
|
@Override
|
80
|
-
protected
|
80
|
+
protected JdbcOutputConnector getConnector(PluginTask task, boolean retryableMetadataOperation)
|
81
81
|
{
|
82
82
|
PostgreSQLPluginTask t = (PostgreSQLPluginTask) task;
|
83
83
|
|
@@ -114,7 +114,7 @@ public class PostgreSQLOutputPlugin
|
|
114
114
|
props.setProperty("password", t.getPassword());
|
115
115
|
logConnectionProperties(url, props);
|
116
116
|
|
117
|
-
return new PostgreSQLOutputConnector(url, props, t.getSchema());
|
117
|
+
return new PostgreSQLOutputConnector(url, props, t.getSchema(), t.getTransactionIsolation());
|
118
118
|
}
|
119
119
|
|
120
120
|
@Override
|
@@ -9,7 +9,6 @@ import java.io.OutputStreamWriter;
|
|
9
9
|
import java.io.IOException;
|
10
10
|
import java.nio.charset.Charset;
|
11
11
|
import java.math.BigDecimal;
|
12
|
-
import java.sql.SQLException;
|
13
12
|
import org.embulk.spi.time.Timestamp;
|
14
13
|
import org.embulk.output.jdbc.BatchInsert;
|
15
14
|
|
@@ -71,14 +70,6 @@ public abstract class AbstractPostgreSQLCopyBatchInsert
|
|
71
70
|
}
|
72
71
|
}
|
73
72
|
|
74
|
-
public void finish() throws IOException, SQLException
|
75
|
-
{
|
76
|
-
closeCurrentFile(); // this is necessary to make getBatchWeight() work
|
77
|
-
if (getBatchWeight() != 0) {
|
78
|
-
flush();
|
79
|
-
}
|
80
|
-
}
|
81
|
-
|
82
73
|
public void add() throws IOException
|
83
74
|
{
|
84
75
|
writer.write(newLineString);
|
@@ -5,6 +5,7 @@ import java.io.FileInputStream;
|
|
5
5
|
import java.io.IOException;
|
6
6
|
import java.sql.SQLException;
|
7
7
|
|
8
|
+
import org.embulk.output.jdbc.JdbcOutputConnector;
|
8
9
|
import org.embulk.output.jdbc.JdbcSchema;
|
9
10
|
import org.embulk.output.jdbc.TableIdentifier;
|
10
11
|
import org.embulk.spi.Exec;
|
@@ -15,14 +16,14 @@ public class PostgreSQLCopyBatchInsert
|
|
15
16
|
extends AbstractPostgreSQLCopyBatchInsert
|
16
17
|
{
|
17
18
|
private final Logger logger = Exec.getLogger(PostgreSQLCopyBatchInsert.class);
|
18
|
-
private final
|
19
|
+
private final JdbcOutputConnector connector;
|
19
20
|
|
20
21
|
private PostgreSQLOutputConnection connection = null;
|
21
22
|
private CopyManager copyManager = null;
|
22
23
|
private String copySql = null;
|
23
24
|
private long totalRows;
|
24
25
|
|
25
|
-
public PostgreSQLCopyBatchInsert(
|
26
|
+
public PostgreSQLCopyBatchInsert(JdbcOutputConnector connector) throws IOException, SQLException
|
26
27
|
{
|
27
28
|
super();
|
28
29
|
this.connector = connector;
|
@@ -31,7 +32,7 @@ public class PostgreSQLCopyBatchInsert
|
|
31
32
|
@Override
|
32
33
|
public void prepare(TableIdentifier loadTable, JdbcSchema insertSchema) throws SQLException
|
33
34
|
{
|
34
|
-
this.connection = connector.connect(true);
|
35
|
+
this.connection = (PostgreSQLOutputConnection)connector.connect(true);
|
35
36
|
this.copySql = connection.buildCopySql(loadTable, insertSchema);
|
36
37
|
this.copyManager = connection.newCopyManager();
|
37
38
|
logger.info("Copy SQL: "+copySql);
|
@@ -41,6 +42,7 @@ public class PostgreSQLCopyBatchInsert
|
|
41
42
|
public void flush() throws IOException, SQLException
|
42
43
|
{
|
43
44
|
File file = closeCurrentFile(); // flush buffered data in writer
|
45
|
+
if (getBatchWeight() == 0) return;
|
44
46
|
|
45
47
|
logger.info(String.format("Loading %,d rows (%,d bytes)", batchRows, file.length()));
|
46
48
|
long startTime = System.currentTimeMillis();
|
@@ -61,6 +63,11 @@ public class PostgreSQLCopyBatchInsert
|
|
61
63
|
file.delete();
|
62
64
|
}
|
63
65
|
|
66
|
+
@Override
|
67
|
+
public void finish() throws IOException ,SQLException
|
68
|
+
{
|
69
|
+
}
|
70
|
+
|
64
71
|
@Override
|
65
72
|
public void close() throws IOException, SQLException
|
66
73
|
{
|
@@ -18,11 +18,10 @@ public class PostgreSQLOutputConnection
|
|
18
18
|
{
|
19
19
|
private static final int MAX_NUMERIC_PRECISION = 1000;
|
20
20
|
|
21
|
-
public PostgreSQLOutputConnection(Connection connection, String schemaName
|
21
|
+
public PostgreSQLOutputConnection(Connection connection, String schemaName)
|
22
22
|
throws SQLException
|
23
23
|
{
|
24
24
|
super(connection, schemaName);
|
25
|
-
connection.setAutoCommit(autoCommit);
|
26
25
|
}
|
27
26
|
|
28
27
|
public String buildCopySql(TableIdentifier toTable, JdbcSchema toTableSchema)
|
@@ -5,28 +5,34 @@ import java.sql.Connection;
|
|
5
5
|
import java.sql.DriverManager;
|
6
6
|
import java.sql.SQLException;
|
7
7
|
|
8
|
-
import org.embulk.output.jdbc.
|
8
|
+
import org.embulk.output.jdbc.JdbcOutputConnection;
|
9
|
+
import org.embulk.output.jdbc.AbstractJdbcOutputConnector;
|
10
|
+
import org.embulk.output.jdbc.TransactionIsolation;
|
11
|
+
|
12
|
+
import com.google.common.base.Optional;
|
9
13
|
|
10
14
|
public class PostgreSQLOutputConnector
|
11
|
-
|
15
|
+
extends AbstractJdbcOutputConnector
|
12
16
|
{
|
13
17
|
private final String url;
|
14
18
|
private final Properties properties;
|
15
19
|
private final String schemaName;
|
16
20
|
|
17
|
-
public PostgreSQLOutputConnector(String url, Properties properties, String schemaName
|
21
|
+
public PostgreSQLOutputConnector(String url, Properties properties, String schemaName,
|
22
|
+
Optional<TransactionIsolation> transactionIsolation)
|
18
23
|
{
|
24
|
+
super(transactionIsolation);
|
19
25
|
this.url = url;
|
20
26
|
this.properties = properties;
|
21
27
|
this.schemaName = schemaName;
|
22
28
|
}
|
23
29
|
|
24
30
|
@Override
|
25
|
-
|
31
|
+
protected JdbcOutputConnection connect() throws SQLException
|
26
32
|
{
|
27
33
|
Connection c = DriverManager.getConnection(url, properties);
|
28
34
|
try {
|
29
|
-
PostgreSQLOutputConnection con = new PostgreSQLOutputConnection(c, schemaName
|
35
|
+
PostgreSQLOutputConnection con = new PostgreSQLOutputConnection(c, schemaName);
|
30
36
|
c = null;
|
31
37
|
return con;
|
32
38
|
} finally {
|
@@ -0,0 +1,103 @@
|
|
1
|
+
package org.embulk.output.postgresql;
|
2
|
+
|
3
|
+
import static org.embulk.output.postgresql.PostgreSQLTests.execute;
|
4
|
+
import static org.embulk.output.postgresql.PostgreSQLTests.selectRecords;
|
5
|
+
import static org.hamcrest.Matchers.is;
|
6
|
+
import static org.junit.Assert.assertThat;
|
7
|
+
|
8
|
+
import java.io.File;
|
9
|
+
import java.io.IOException;
|
10
|
+
import java.net.URISyntaxException;
|
11
|
+
import java.net.URL;
|
12
|
+
import java.nio.file.FileSystems;
|
13
|
+
import java.nio.file.Path;
|
14
|
+
|
15
|
+
import org.embulk.config.ConfigDiff;
|
16
|
+
import org.embulk.config.ConfigSource;
|
17
|
+
import org.embulk.output.PostgreSQLOutputPlugin;
|
18
|
+
import org.embulk.spi.OutputPlugin;
|
19
|
+
import org.embulk.test.EmbulkTests;
|
20
|
+
import org.embulk.test.TestingEmbulk;
|
21
|
+
import org.junit.Before;
|
22
|
+
import org.junit.Rule;
|
23
|
+
import org.junit.Test;
|
24
|
+
|
25
|
+
import com.google.common.io.Resources;
|
26
|
+
|
27
|
+
public class BasicTest
|
28
|
+
{
|
29
|
+
private static final String BASIC_RESOURCE_PATH = "org/embulk/output/postgresql/test/expect/basic/";
|
30
|
+
|
31
|
+
private static ConfigSource loadYamlResource(TestingEmbulk embulk, String fileName)
|
32
|
+
{
|
33
|
+
return embulk.loadYamlResource(BASIC_RESOURCE_PATH + fileName);
|
34
|
+
}
|
35
|
+
|
36
|
+
private static String readResource(String fileName)
|
37
|
+
{
|
38
|
+
return EmbulkTests.readResource(BASIC_RESOURCE_PATH + fileName);
|
39
|
+
}
|
40
|
+
|
41
|
+
@Rule
|
42
|
+
public TestingEmbulk embulk = TestingEmbulk.builder()
|
43
|
+
.registerPlugin(OutputPlugin.class, "postgresql", PostgreSQLOutputPlugin.class)
|
44
|
+
.build();
|
45
|
+
|
46
|
+
private ConfigSource baseConfig;
|
47
|
+
|
48
|
+
@Before
|
49
|
+
public void setup() throws IOException
|
50
|
+
{
|
51
|
+
baseConfig = PostgreSQLTests.baseConfig();
|
52
|
+
execute(readResource("setup.sql")); // setup rows
|
53
|
+
|
54
|
+
if (System.getProperty("path.separator").equals(";")) {
|
55
|
+
// for Windows (because encoding will be set to UTF8 when executed by Eclipse)
|
56
|
+
System.setProperty("file.encoding", "MS932");
|
57
|
+
}
|
58
|
+
}
|
59
|
+
|
60
|
+
@Test
|
61
|
+
public void testNumber() throws Exception
|
62
|
+
{
|
63
|
+
Path in1 = toPath("test_number.csv");
|
64
|
+
TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_number.yml")), in1);
|
65
|
+
assertThat(selectRecords(embulk, "test_number"), is(readResource("test_number_expected.csv")));
|
66
|
+
//assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
|
67
|
+
}
|
68
|
+
|
69
|
+
@Test
|
70
|
+
public void testString() throws Exception
|
71
|
+
{
|
72
|
+
Path in1 = toPath("test_string.csv");
|
73
|
+
TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_string.yml")), in1);
|
74
|
+
assertThat(selectRecords(embulk, "test_string"), is(readResource("test_string_expected.csv")));
|
75
|
+
//assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
|
76
|
+
}
|
77
|
+
|
78
|
+
@Test
|
79
|
+
public void testTimestamp() throws Exception
|
80
|
+
{
|
81
|
+
Path in1 = toPath("test_timestamp.csv");
|
82
|
+
TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_timestamp.yml")), in1);
|
83
|
+
assertThat(selectRecords(embulk, "test_timestamp"), is(readResource("test_timestamp_expected.csv")));
|
84
|
+
//assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
|
85
|
+
}
|
86
|
+
|
87
|
+
@Test
|
88
|
+
public void testJson() throws Exception
|
89
|
+
{
|
90
|
+
Path in1 = toPath("test_json.csv");
|
91
|
+
TestingEmbulk.RunResult result1 = embulk.runOutput(baseConfig.merge(loadYamlResource(embulk, "test_json.yml")), in1);
|
92
|
+
assertThat(selectRecords(embulk, "test_json"), is(readResource("test_json_expected.csv")));
|
93
|
+
//assertThat(result1.getConfigDiff(), is((ConfigDiff) loadYamlResource(embulk, "test_expected.diff")));
|
94
|
+
}
|
95
|
+
|
96
|
+
|
97
|
+
private Path toPath(String fileName) throws URISyntaxException
|
98
|
+
{
|
99
|
+
URL url = Resources.getResource(BASIC_RESOURCE_PATH + fileName);
|
100
|
+
return FileSystems.getDefault().getPath(new File(url.toURI()).getAbsolutePath());
|
101
|
+
}
|
102
|
+
|
103
|
+
}
|
@@ -0,0 +1,68 @@
|
|
1
|
+
package org.embulk.output.postgresql;
|
2
|
+
|
3
|
+
import org.embulk.test.EmbulkTests;
|
4
|
+
import org.embulk.test.TestingEmbulk;
|
5
|
+
|
6
|
+
import com.google.common.base.Throwables;
|
7
|
+
import com.google.common.io.ByteStreams;
|
8
|
+
|
9
|
+
import java.io.IOException;
|
10
|
+
import java.nio.file.Files;
|
11
|
+
import java.nio.file.Path;
|
12
|
+
|
13
|
+
import jnr.ffi.Platform;
|
14
|
+
import jnr.ffi.Platform.OS;
|
15
|
+
|
16
|
+
import org.embulk.config.ConfigSource;
|
17
|
+
|
18
|
+
import static java.util.Locale.ENGLISH;
|
19
|
+
import static org.embulk.test.EmbulkTests.readSortedFile;
|
20
|
+
|
21
|
+
public class PostgreSQLTests
|
22
|
+
{
|
23
|
+
public static ConfigSource baseConfig()
|
24
|
+
{
|
25
|
+
return EmbulkTests.config("EMBULK_OUTPUT_POSTGRESQL_TEST_CONFIG");
|
26
|
+
}
|
27
|
+
|
28
|
+
public static void execute(String sql)
|
29
|
+
{
|
30
|
+
System.out.println(sql);
|
31
|
+
ConfigSource config = baseConfig();
|
32
|
+
ProcessBuilder pb = new ProcessBuilder("psql", "-w", "--set", "ON_ERROR_STOP=1", "-c", sql);
|
33
|
+
pb.environment().put("PGUSER", config.get(String.class, "user"));
|
34
|
+
pb.environment().put("PGPASSWORD", config.get(String.class, "password"));
|
35
|
+
pb.environment().put("PGDATABASE", config.get(String.class, "database"));
|
36
|
+
pb.environment().put("PGPORT", config.get(String.class, "port", "5432"));
|
37
|
+
pb.redirectErrorStream(true);
|
38
|
+
int code;
|
39
|
+
try {
|
40
|
+
Process process = pb.start();
|
41
|
+
ByteStreams.copy(process.getInputStream(), System.out);
|
42
|
+
code = process.waitFor();
|
43
|
+
} catch (IOException | InterruptedException ex) {
|
44
|
+
throw Throwables.propagate(ex);
|
45
|
+
}
|
46
|
+
if (code != 0) {
|
47
|
+
throw new RuntimeException(String.format(ENGLISH,
|
48
|
+
"Command finished with non-zero exit code. Exit code is %d.", code));
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
52
|
+
private static String convert(String sql)
|
53
|
+
{
|
54
|
+
if (Platform.getNativePlatform().getOS().equals(OS.WINDOWS)) {
|
55
|
+
// '"' should be '\"' and '\' should be '\\' in Windows
|
56
|
+
return sql.replace("\\\\", "\\").replace("\\", "\\\\").replace("\"", "\\\"");
|
57
|
+
}
|
58
|
+
return sql;
|
59
|
+
}
|
60
|
+
|
61
|
+
public static String selectRecords(TestingEmbulk embulk, String tableName) throws IOException
|
62
|
+
{
|
63
|
+
Path temp = embulk.createTempFile("txt");
|
64
|
+
Files.delete(temp);
|
65
|
+
execute("\\copy " + tableName + " to '" + temp.toString().replace("\\", "\\\\") + "' delimiter ','");
|
66
|
+
return readSortedFile(temp);
|
67
|
+
}
|
68
|
+
}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
drop table if exists test_number;
|
2
|
+
|
3
|
+
create table test_number (
|
4
|
+
id char(4),
|
5
|
+
bool_item bool,
|
6
|
+
smallint_item smallint,
|
7
|
+
int_item int,
|
8
|
+
bigint_item bigint,
|
9
|
+
real_item real,
|
10
|
+
double_item double precision,
|
11
|
+
money_item money,
|
12
|
+
numeric_item numeric(8,3),
|
13
|
+
primary key (id)
|
14
|
+
);
|
15
|
+
|
16
|
+
drop table if exists test_string;
|
17
|
+
|
18
|
+
create table test_string (
|
19
|
+
id int,
|
20
|
+
char_item char(4),
|
21
|
+
varchar_item varchar(4),
|
22
|
+
text_item text,
|
23
|
+
primary key (id)
|
24
|
+
);
|
25
|
+
|
26
|
+
drop table if exists test_timestamp;
|
27
|
+
|
28
|
+
create table test_timestamp (
|
29
|
+
id int,
|
30
|
+
date_item date,
|
31
|
+
time_item time,
|
32
|
+
timestamp_item timestamp,
|
33
|
+
primary key (id)
|
34
|
+
);
|
35
|
+
|
36
|
+
drop table if exists test_json;
|
37
|
+
|
38
|
+
create table test_json (
|
39
|
+
id int,
|
40
|
+
json_item json,
|
41
|
+
jsonb_item jsonb,
|
42
|
+
primary key (id)
|
43
|
+
);
|
44
|
+
|
@@ -0,0 +1,5 @@
|
|
1
|
+
id:string,bool_item:long,smallint_item:long,int_item:long,bigint_item:long,real_item:double,double_item:double,money_item:string,numeric_item:string
|
2
|
+
A001,0,0,0,0,0,0,0,0
|
3
|
+
A002,1,12345,123456789,123456789012,123.45,123456.789,1234,1234.567
|
4
|
+
A003,0,-1,-1,-1,-1,-1,-1,-1
|
5
|
+
A004,,,,,,,,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: embulk-output-postgresql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sadayuki Furuhashi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Inserts or updates records to a table.
|
14
14
|
email:
|
@@ -19,8 +19,8 @@ extra_rdoc_files: []
|
|
19
19
|
files:
|
20
20
|
- README.md
|
21
21
|
- build.gradle
|
22
|
-
- classpath/embulk-output-jdbc-0.8.
|
23
|
-
- classpath/embulk-output-postgresql-0.8.
|
22
|
+
- classpath/embulk-output-jdbc-0.8.3.jar
|
23
|
+
- classpath/embulk-output-postgresql-0.8.3.jar
|
24
24
|
- default_jdbc_driver/postgresql-9.4-1205-jdbc41.jar
|
25
25
|
- lib/embulk/output/postgresql.rb
|
26
26
|
- src/main/java/org/embulk/output/PostgreSQLOutputPlugin.java
|
@@ -29,6 +29,21 @@ files:
|
|
29
29
|
- src/main/java/org/embulk/output/postgresql/PostgreSQLOutputConnection.java
|
30
30
|
- src/main/java/org/embulk/output/postgresql/PostgreSQLOutputConnector.java
|
31
31
|
- src/main/java/org/embulk/output/postgresql/setter/PostgreSQLColumnSetterFactory.java
|
32
|
+
- src/test/java/org/embulk/output/postgresql/BasicTest.java
|
33
|
+
- src/test/java/org/embulk/output/postgresql/PostgreSQLTests.java
|
34
|
+
- src/test/resources/org/embulk/output/postgresql/test/expect/basic/setup.sql
|
35
|
+
- src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_json.csv
|
36
|
+
- src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_json.yml
|
37
|
+
- src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_json_expected.csv
|
38
|
+
- src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_number.csv
|
39
|
+
- src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_number.yml
|
40
|
+
- src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_number_expected.csv
|
41
|
+
- src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_string.csv
|
42
|
+
- src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_string.yml
|
43
|
+
- src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_string_expected.csv
|
44
|
+
- src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_timestamp.csv
|
45
|
+
- src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_timestamp.yml
|
46
|
+
- src/test/resources/org/embulk/output/postgresql/test/expect/basic/test_timestamp_expected.csv
|
32
47
|
homepage: https://github.com/embulk/embulk-output-jdbc
|
33
48
|
licenses:
|
34
49
|
- Apache 2.0
|
Binary file
|
Binary file
|