embulk-input-redshift 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d6ecf6fa6da2d5d3a4d75a70b30034b872ae5faa
4
+ data.tar.gz: 753ed515bae22bbe5e1aebe551e7c9c97338677e
5
+ SHA512:
6
+ metadata.gz: 2a4e639b0f9016471ce9e1c17f0a8027ca8be7eb8e854441f23ec27cbe1d2744c6b8e2229d8f8e429e37d05fd2dc16e0e746e3f4e2942ac0c100e7af84010e5a
7
+ data.tar.gz: 619b3c4ef570a1cd9277c58fdb96387b1190ea0d5ed022ec469932952f485fb51d65130f757b3e552c864931c00a4d06435c9c4d3e4b8a0ffa6c8973bfa5d464
data/README.md ADDED
@@ -0,0 +1,42 @@
1
+ # Redshift input plugins for Embulk
2
+
3
+ Redshift input plugins for Embulk loads records from Redshift.
4
+
5
+ ## Overview
6
+
7
+ * **Plugin type**: input
8
+ * **Resume supported**: yes
9
+
10
+ ## Configuration
11
+
12
+ - **host**: database host name (string, required)
13
+ - **port**: database port number (integer, 5439)
14
+ - **user**: database login user name (string, required)
15
+ - **password**: database login password (string, default: "")
16
+ - **database**: destination database name (string, required)
17
+ - **schema**: destination name (string, default: "public")
18
+ - **table**: destination name (string, required)
19
+ - **select**: comma-separated list of columns to select (string, default: "*")
20
+ - **where**: WHERE condition to filter the rows (string, default: no-condition)
21
+ - **fetch_rows**: number of rows to fetch one time (used for java.sql.Statement#setFetchSize) (integer, default: 10000)
22
+ - **options**: extra JDBC properties (hash, default: {})
23
+
24
+ ## Example
25
+
26
+ ```yaml
27
+ in:
28
+ type: redshift
29
+ host: localhost
30
+ user: myuser
31
+ password: ""
32
+ database: my_database
33
+ table: my_table
34
+ select: "col1, col2, col3"
35
+ where: "col4 != 'a'"
36
+ ```
37
+
38
+ ## Build
39
+
40
+ ```
41
+ $ ./gradlew gem
42
+ ```
data/build.gradle ADDED
@@ -0,0 +1,6 @@
1
+ dependencies {
2
+ compile project(':embulk-input-jdbc')
3
+ compile project(':embulk-input-postgresql')
4
+
5
+ testCompile project(':embulk-input-jdbc').sourceSets.test.output
6
+ }
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,3 @@
1
+ Embulk::JavaPlugin.register_input(
2
+ :redshift, "org.embulk.input.RedshiftInputPlugin",
3
+ File.expand_path('../../../../classpath', __FILE__))
@@ -0,0 +1,61 @@
1
+ package org.embulk.input;
2
+
3
+ import java.util.Properties;
4
+ import java.sql.Connection;
5
+ import java.sql.Driver;
6
+ import java.sql.SQLException;
7
+ import com.google.common.base.Throwables;
8
+ import org.embulk.config.Config;
9
+ import org.embulk.input.jdbc.AbstractJdbcInputPlugin;
10
+ import org.embulk.input.jdbc.AbstractJdbcInputPlugin;
11
+ import org.embulk.input.postgresql.PostgreSQLInputConnection;
12
+
13
+ public class RedshiftInputPlugin
14
+ extends AbstractJdbcInputPlugin
15
+ {
16
+ private static final String DEFAULT_SCHEMA = "public";
17
+ private static final int DEFAULT_PORT = 5439;
18
+
19
+ private static final Driver driver = new org.postgresql.Driver();
20
+
21
+ @Override
22
+ protected PostgreSQLInputConnection newConnection(PluginTask task) throws SQLException
23
+ {
24
+ String url = String.format("jdbc:postgresql://%s:%d/%s",
25
+ task.getHost(), task.getPort().or(DEFAULT_PORT), task.getDatabase());
26
+
27
+ Properties props = new Properties();
28
+ props.setProperty("user", task.getUser());
29
+ props.setProperty("password", task.getPassword());
30
+ props.setProperty("loginTimeout", "300"); // seconds
31
+ props.setProperty("socketTimeout", "1800"); // seconds
32
+
33
+ // Enable keepalive based on tcp_keepalive_time, tcp_keepalive_intvl and tcp_keepalive_probes kernel parameters.
34
+ // Socket options TCP_KEEPCNT, TCP_KEEPIDLE, and TCP_KEEPINTVL are not configurable.
35
+ props.setProperty("tcpKeepAlive", "true");
36
+
37
+ // TODO
38
+ //switch task.getSssl() {
39
+ //when "disable":
40
+ // break;
41
+ //when "enable":
42
+ // props.setProperty("sslfactory", "org.postgresql.ssl.NonValidatingFactory"); // disable server-side validation
43
+ //when "verify":
44
+ // props.setProperty("ssl", "true");
45
+ // break;
46
+ //}
47
+
48
+ props.putAll(task.getOptions());
49
+
50
+ Connection con = driver.connect(url, props);
51
+ try {
52
+ PostgreSQLInputConnection c = new PostgreSQLInputConnection(con, task.getSchema().or(DEFAULT_SCHEMA));
53
+ con = null;
54
+ return c;
55
+ } finally {
56
+ if (con != null) {
57
+ con.close();
58
+ }
59
+ }
60
+ }
61
+ }
metadata ADDED
@@ -0,0 +1,56 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: embulk-input-redshift
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - FURUHASHI Sadayuki
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-02-16 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: JDBC input plugin is an Embulk plugin that loads records from JDBC so that any output plugins can receive the records. Search the output plugins by "embulk-output" keyword.
14
+ email:
15
+ - frsyuki@users.sourceforge.jp
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - README.md
21
+ - build.gradle
22
+ - lib/embulk/input/redshift.rb
23
+ - src/main/java/org/embulk/input/RedshiftInputPlugin.java
24
+ - classpath/embulk-input-jdbc-0.1.0.jar
25
+ - classpath/embulk-input-postgresql-0.1.0.jar
26
+ - classpath/embulk-input-redshift-0.1.0.jar
27
+ - classpath/jna-4.1.0.jar
28
+ - classpath/jna-platform-4.1.0.jar
29
+ - classpath/postgresql-9.4-1200-jdbc41.jar
30
+ - classpath/slf4j-simple-1.7.7.jar
31
+ - classpath/waffle-jna-1.7.jar
32
+ homepage: https://github.com/embulk/embulk-input-jdbc
33
+ licenses:
34
+ - Apache 2.0
35
+ metadata: {}
36
+ post_install_message:
37
+ rdoc_options: []
38
+ require_paths:
39
+ - lib
40
+ required_ruby_version: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ required_rubygems_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ requirements: []
51
+ rubyforge_project:
52
+ rubygems_version: 2.1.9
53
+ signing_key:
54
+ specification_version: 4
55
+ summary: JDBC input plugin for Embulk
56
+ test_files: []