embulk-output-postgresql 0.8.2 → 0.8.3
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 -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
|