{"id":27627229,"url":"https://github.com/treasure-data/td-jdbc","last_synced_at":"2025-04-23T13:53:43.382Z","repository":{"id":3118368,"uuid":"3704503","full_name":"treasure-data/td-jdbc","owner":"treasure-data","description":"JDBC Driver for Treasure Data","archived":false,"fork":false,"pushed_at":"2024-05-01T05:22:35.000Z","size":3043,"stargazers_count":11,"open_issues_count":19,"forks_count":12,"subscribers_count":82,"default_branch":"master","last_synced_at":"2024-05-01T06:30:24.481Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://docs.treasure-data.com/articles/jdbc-driver","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/treasure-data.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.txt","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-03-13T08:21:47.000Z","updated_at":"2024-01-12T18:05:18.000Z","dependencies_parsed_at":"2023-10-02T04:22:40.190Z","dependency_job_id":"fd8e14d8-3c6b-4f4b-9aa9-bca09b310974","html_url":"https://github.com/treasure-data/td-jdbc","commit_stats":null,"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/treasure-data%2Ftd-jdbc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/treasure-data%2Ftd-jdbc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/treasure-data%2Ftd-jdbc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/treasure-data%2Ftd-jdbc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/treasure-data","download_url":"https://codeload.github.com/treasure-data/td-jdbc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250444244,"owners_count":21431612,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-04-23T13:53:42.869Z","updated_at":"2025-04-23T13:53:43.375Z","avatar_url":"https://github.com/treasure-data.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Treasure Data JDBC Driver\n\n__NOTE__: We no longer maintain td-jdbc driver for Presto now that [we support native trino-jdbc drivers](https://trino.io/docs/current/client/jdbc.html)\n\n\nJDBC Driver for accessing [Treasure Data](http://www.treasuredata.com). This works with Java 1.6 or higher.\n\n- [Download](https://repo1.maven.org/maven2/com/treasuredata/td-jdbc/) td-jdbc-jar-with-dependencies-(version).jar\n- Use driver class name: `com.treasuredata.jdbc.TreasureDataDriver`\n- Read [Quick Start](#quick-start) or [General Usage](http://docs.treasure-data.com/articles/jdbc-driver)\n\ntd-jdbc internally uses [`td-client-java`](https://github.com/treasure-data/td-client-java), a Java client for Treasure Data.\n\n## For Maven Users\n\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.treasuredata/td-jdbc/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.treasuredata/td-jdbc/)\n[![Javadoc](https://javadoc-emblem.rhcloud.com/doc/com.treasuredata/td-jdbc/badge.svg)](http://www.javadoc.io/doc/com.treasuredata/td-jdbc)\n\n```\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.treasuredata\u003c/groupId\u003e\n  \u003cartifactId\u003etd-jdbc\u003c/artifactId\u003e\n  \u003cversion\u003e(version)\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n# Quick Start\n\nCreate a `java.sql.Connection` object using JDBC address `jdbc:td://api.treasuredata.com/(database name)`.\n\n* [JDBC connection example](src/test/java/com/treasuredata/jdbc/Example.java)\n\n```java\nProperties props = new Properties();\nprops.setProperty(\"user\", \"(your account e-mail)\");\nprops.setProperty(\"password\", \"(your password)\");\n\n// Alternatively, you can use API key instead of user and password\n// props.setProperty(\"apikey\", \"(your API key)\")\n\n// Set the other options\n\n// Use SSL (default) or not\n// props.setProperty(\"useSSL\", \"true\");\n\n// Run Hive jobs. The default is \"presto\"\n// props.setProperty(\"type\", \"hive\");\n\n// proxy configurarion (optional)\n// props.setProperty(\"httpproxyhost\", \"(proxy host)\");\n// props.setProperty(\"httpproxyport\", \"(proxy port)\");\n// props.setProperty(\"httpproxyuser\", \"(proxy username)\");\n// props.setProperty(\"httpproxypassword\", \"(proxy password)\");\n\nConnection conn = DriverManager.getConnection(\"jdbc:td://api.treasuredata.com/sample_datasets\", props);\nStatement st = conn.createStatement();\ntry {\n    ResultSet rs = st.executeQuery(\"SELECT count(1) FROM www_access\");\n    \n    // You can see the job ID of the query\n    TDResultSetMetaData rsmd = (TDResultSetMetaData) rs.getResultSetMetaData();\n    System.out.println(\"job id: \" + rsmd.getJobId());\n\n    // Getting the result rows\n    while (rs.next()) {\n        int count = rs.getInt(1);\n        System.out.println(\"result = \" + count);\n    }\n    rs.close();\n}\nfinally {\n    st.close();\n    conn.close();\n}\n```\n\nTo configure td-jdbc connection parameters, use URL parameters, Properties object or System properties. The precedence of these properties is:\n\n1. Environment variable (only for TD_API_KEY parameter)\n1. System properties\n1. Properties object passed by `DriverManager.getConnection(jdbc_url, Properties)`\n1. JDBC URL parameters (e.g., `jdbc:td://api.treasuredata.com/mydb;type=hive;useSSL=true`), separated by semi-colon `;`\n\nIf your environment defines TD_API_KEY variable, td-jdbc uses it. For the other properties, System properties have the highest priority.\n\n## A list of JDBC Configurations\n\nYou must provide `apikey` property or both `user` (your account e-mail) and `password` for the authentication:\n\n|key     | default value | description |\n|--------|---------------|-------------|\n|`apikey`  |               | API key to access Treasure Data. You can also set this via TD_API_KEY environment variable.  |\n|`user`    |               | Account e-mail address (unnecessary if `apikey` is set) |\n|`password`|               | Account password (unnecessary if `apikey` is set) |\n|`type`    | presto        | Query engine. hive, preto or pig |\n|`useSSL`  | false         | Use SSL encryption for accessing Treasure Data |\n|`useapikey`  | false | Use API key to access Treasure Data even if `user` or `password` is set |\n|`httpproxyhost` |         | Proxy host (optional) e.g., \"myproxy.com\"  |\n|`httpproxyport`|         | Proxy port (optional) e.g., \"80\" |\n|`httpproxyuser` |         | Proxy user (optional)  |\n|`httpproxypassword` |     | Proxy password (optional)  |\n\nIf both `user` and `password` are given, td-jdbc uses this pair instead of `apikey`. \n\nYou can also use [td-client-java specific options](https://github.com/treasure-data/td-client-java/blob/master/README.md#configuration).\n\n# Internals\n\nWhen running a query (e.g. SELECT), the driver submits a job request to\nTreasure Data. td-jdbc periodically monitors the job progress and fetches the\nresult after the job completion.\n\nFor INSERT statement, td-jdbc buffers the data into local memory,\nthen flushes it to Treasure Data every 5 minutes, so there will be a delay\nuntil your data becomes accessible in Treasure Data.\n\n## Implementation Status\n\nFollowing methods have been implemented.\n\n### java.sql.Connection\n\n  * createStatement() and createStatement(..)\n  * getMetaData()\n  * prepareStatement(..)\n\n### java.sql.Statement\n\n  * execute(..)\n  * executeQuery(..)\n  * setResultSet()\n\n### java.sql.PreparedStatement\n\n  * addBatch()\n  * clearParameters()\n  * execute()\n  * executeQuery()\n  * getMetaData()\n  * setBoolean(..)\n  * setByte(..)\n  * setDouble(..)\n  * setFloat(..)\n  * setInt(..)\n  * setLong(..)\n  * setShort(..)\n  * setString(..)\n\n### java.sql.ResultSet\n\n  * findColumn(String)\n  * getBoolean(..)\n  * getByte(..)\n  * getDate(int) and getDate(String)\n  * getDouble(int)\n  * getFloat(int)\n  * getInt(int)\n  * getLong(int)\n  * getMetaData()\n  * next()\n  * getObject(int) and getObject(String)\n  * getShort(..)\n\n### java.sql.ResultSetMetaData\n\n  * getColumnCount()\n  * getColumnDisplaySize(int)\n  * getColumnLabel(int)\n  * getColumnName(int)\n  * getColumnType(int)\n  * getColumnTypeName(int)\n\n### java.sql.DatabaseMetaData\n\n  * getCatalogs()\n  * getColumns(..)\n  * getSchemas(..)\n  * getTableTypes()\n  * getTables(..)\n\n## License\n\nApache License, Version 2.0\n\n## For developers\n\n### Building\n\nYou can get latest source code using git.\n\n    $ git clone git@github.com:treasure-data/td-jdbc.git\n    $ cd td-jdbc\n    $ mvn package\n\nYou will get the td-jdbc jar file in `td-jdbc/target` folder\nThe file name will be `td-jdbc-${jdbc.version}-jar-with-dependencies.jar`.\nSee the [pom.xml file](https://github.com/treasure-data/td-jdbc/blob/master/pom.xml)\nfor more details.\n\nTo run production tests, write your apikey to `$HOME/.td/td.conf`:\n```\n[account]\n  user = (e-mail address)\n  apikey = (apikey)\n  password = (password)\n```\n\n### Buidling td-jdbc with JDK7 or higher\n\njdbc-api-4.1.jar, which is contained in mvn-local, is necessary to build td-jdbc using an older version (4.1) of JDBC API.\n\n#### Building jdbc-api-4.1.jar on Mac OS X\n\n- Install jdk6 https://support.apple.com/kb/DL1572?locale=en_US\n```\n$ jar xvf jar xvf /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bundle/Classes/classes.jar java/sql javax/sql\n$ jar cvf jdbc-api-4.1.jar java javax\n$ mvn deploy:deploy-file -Durl=file://(path to td-jdbc folder)/mvn-local -Dfile=jdbc-api-4.1.jar -DgroupId=com.treasuredata.thirdparty -DartifactId=jdbc-api -Dpackaging=jar -Dversion=4.1\n``\n\n### Publish to Sonatype\n\nThe following operations basically follows [this document](https://central.sonatype.org/pages/apache-maven.html)\n\n- Setup your Sonatype account and GPG key\n- Prepare `~/.m2/settings.xml` like this\n\n```\n \u003csettings\u003e\n   \u003cservers\u003e\n      \u003cserver\u003e\n          \u003cid\u003esonatype-nexus-staging\u003c/id\u003e\n          \u003cusername\u003e$(your oss.sonatype.org account)\u003c/username\u003e\n          \u003cpassword\u003e**********\u003c/password\u003e\n      \u003c/server\u003e\n   \u003c/servers\u003e\n \u003c/settings\u003e\n```\n- Execute these commands\n\n```\n$ mvn release:clean release:prepare\n$ mvn release:perform\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftreasure-data%2Ftd-jdbc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftreasure-data%2Ftd-jdbc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftreasure-data%2Ftd-jdbc/lists"}