<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JDBC Archives - Philipp Salvisberg&#039;s Blog</title>
	<atom:link href="https://www.salvis.com/blog/tag/jdbc/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.salvis.com/blog/tag/jdbc/</link>
	<description>Database-centric development</description>
	<lastBuildDate>Wed, 08 Nov 2023 13:59:16 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.salvis.com/blog/wp-content/uploads/2014/04/favicon.png</url>
	<title>JDBC Archives - Philipp Salvisberg&#039;s Blog</title>
	<link>https://www.salvis.com/blog/tag/jdbc/</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://www.salvis.com/blog/tag/jdbc/feed/"/>
	<item>
		<title>Connecting via JDBC to the Oracle Cloud</title>
		<link>https://www.salvis.com/blog/2021/02/28/connecting-via-jdbc-to-the-oracle-cloud/</link>
		
		<dc:creator><![CDATA[Philipp Salvisberg]]></dc:creator>
		<pubDate>Sun, 28 Feb 2021 12:31:10 +0000</pubDate>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Autonomous Database]]></category>
		<category><![CDATA[JDBC]]></category>
		<guid isPermaLink="false">https://www.salvis.com/blog/?p=11053</guid>

					<description><![CDATA[<p>You can connect to an Oracle Autonomous Database in different ways. This is well documented here. It&#8217;s a bit different from what we know from on-premises environments. In this blog post, I show the steps to connect to an Autonomous Database from a third-party IDE like&#160;DataGrip. From a JDBC perspective, this is<span class="excerpt-hellip"> […]</span></p>
<p>The post <a href="https://www.salvis.com/blog/2021/02/28/connecting-via-jdbc-to-the-oracle-cloud/">Connecting via JDBC to the Oracle Cloud</a> appeared first on <a href="https://www.salvis.com/blog">Philipp Salvisberg&#039;s Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>You can connect to an Oracle Autonomous Database in different ways. This is well documented <a href="https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/connect-jdbc-thin-wallet.html">here</a>. It&#8217;s a bit different from what we know from on-premises environments. In this blog post, I show the steps to connect to an Autonomous Database from a third-party IDE like&nbsp;<a href="https://www.jetbrains.com/datagrip/">DataGrip</a>.</p>



<p>From a JDBC perspective, this is just an ordinary JDBC URL with some driver-specific properties. Therefore, this approach should work for any JDBC-based IDE and also for any Java application.</p>



<h2 class="wp-block-heading">Step 1 &#8211; Download the Wallet</h2>



<p>Go to your Autonomous Database and click on the &#8220;DB Connection&#8221; button. A screen similar to the following appears:</p>



<figure class="wp-block-image"><a href="https://www.salvis.com/blog/wp-content/uploads/2021/02/download-wallet.png"><img fetchpriority="high" decoding="async" width="1024" height="768" src="https://www.salvis.com/blog/wp-content/uploads/2021/02/download-wallet-1024x768.png" alt="" class="wp-image-11057" srcset="https://www.salvis.com/blog/wp-content/uploads/2021/02/download-wallet-1024x768.png 1024w, https://www.salvis.com/blog/wp-content/uploads/2021/02/download-wallet-300x225.png 300w, https://www.salvis.com/blog/wp-content/uploads/2021/02/download-wallet-768x576.png 768w, https://www.salvis.com/blog/wp-content/uploads/2021/02/download-wallet-1536x1152.png 1536w, https://www.salvis.com/blog/wp-content/uploads/2021/02/download-wallet-195x146.png 195w, https://www.salvis.com/blog/wp-content/uploads/2021/02/download-wallet-50x38.png 50w, https://www.salvis.com/blog/wp-content/uploads/2021/02/download-wallet-100x75.png 100w, https://www.salvis.com/blog/wp-content/uploads/2021/02/download-wallet-1x1.png 1w, https://www.salvis.com/blog/wp-content/uploads/2021/02/download-wallet.png 2048w" sizes="(max-width:767px) 480px, (max-width:1024px) 100vw, 1024px" /></a></figure>



<p>Press on the &#8220;Download Wallet&#8221; button and enter a password. This password is used to protect the key and the trust store. We will need it later. I named my instance &#8220;ATP21&#8221;.&nbsp;Therefore, in my case, a zip archive named &#8220;Wallet_ATP21.zip&#8221; was downloaded.</p>



<h2 class="wp-block-heading">Step 2 &#8211; Unzip the Wallet</h2>



<p>Unzip the downloaded zip file and move it to a location where want to keep it. The wallet contains the following files:</p>



<ul class="wp-block-list">
<li>README</li>



<li>ewallet.p12</li>



<li>ojdbc.properties</li>



<li>tnsnames.ora</li>



<li>cwallet.sso</li>



<li>keystore.jks</li>



<li>sqlnet.ora</li>



<li>truststore.jks</li>
</ul>



<p>Open the file &#8220;tnsnames.ora&#8221; in a text editor. It contains 5 entries. We need one of those entries to build the JDBC connection string. I highlighted the relevant part of the first entry in the next screenshot:</p>



<figure class="wp-block-image"><a href="https://www.salvis.com/blog/wp-content/uploads/2021/02/tnsnames.ora_.png"><img decoding="async" width="841" height="574" src="https://www.salvis.com/blog/wp-content/uploads/2021/02/tnsnames.ora_.png" alt="" class="wp-image-11059" srcset="https://www.salvis.com/blog/wp-content/uploads/2021/02/tnsnames.ora_.png 841w, https://www.salvis.com/blog/wp-content/uploads/2021/02/tnsnames.ora_-300x205.png 300w, https://www.salvis.com/blog/wp-content/uploads/2021/02/tnsnames.ora_-768x524.png 768w, https://www.salvis.com/blog/wp-content/uploads/2021/02/tnsnames.ora_-214x146.png 214w, https://www.salvis.com/blog/wp-content/uploads/2021/02/tnsnames.ora_-50x34.png 50w, https://www.salvis.com/blog/wp-content/uploads/2021/02/tnsnames.ora_-110x75.png 110w, https://www.salvis.com/blog/wp-content/uploads/2021/02/tnsnames.ora_-1x1.png 1w" sizes="(max-width:767px) 480px, (max-width:841px) 100vw, 841px" /></a></figure>



<h2 class="wp-block-heading"><span style="font-size: 30px;">Step 3a &#8211; Configure Connection in DataGrip (Legacy Driver)</span></h2>



<p>Add a new connection in DataGrip and select &#8220;Oracle&#8221; as shown in the following screenshot:</p>



<p><a href="https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-datasource.png">0</a><a href="https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-datasource.png"><img decoding="async" class="alignnone wp-image-11060" src="https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-datasource.png" alt="" width="401" height="530" srcset="https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-datasource.png 802w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-datasource-227x300.png 227w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-datasource-775x1024.png 775w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-datasource-768x1015.png 768w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-datasource-110x146.png 110w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-datasource-38x50.png 38w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-datasource-57x75.png 57w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-datasource-1x1.png 1w" sizes="(max-width:767px) 401px, 401px" /></a></p>



<p>In the &#8220;General&#8221; tab change the Connection type to &#8220;URL only&#8221;. Enter the user, the password and the complete JDBC URL as shown in the next screenshot:</p>



<figure class="wp-block-image"><a href="https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-1c.png"><img loading="lazy" decoding="async" width="1024" height="768" src="https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-1c-1024x768.png" alt="" class="wp-image-11094" srcset="https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-1c-1024x768.png 1024w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-1c-300x225.png 300w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-1c-768x576.png 768w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-1c-1536x1152.png 1536w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-1c-195x146.png 195w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-1c-50x38.png 50w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-1c-100x75.png 100w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-1c-1x1.png 1w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-1c.png 2048w" sizes="auto, (max-width:767px) 480px, (max-width:1024px) 100vw, 1024px" /></a></figure>



<p>The URL starts with <code>jdbc.oracle:thin:@</code>. The rest is the text I&#8217;ve highlighted in the tnsnames.ora file above.</p>



<p>Then click on the &#8220;Advanced&#8221; tab and define the following properties:</p>



<ul class="wp-block-list">
<li>javax.net.ssl.trustStore</li>



<li>javax.net.ssl.trustStorePassword</li>



<li>javax.net.ssl.keyStore</li>



<li>javax.net.ssl.keyStorePassword</li>
</ul>



<p>Here are my settings (of course you need to amend the values to match the environment of your wallet):</p>



<figure class="wp-block-image size-large"><a href="https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-2b.png"><img loading="lazy" decoding="async" width="1024" height="768" src="https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-2b-1024x768.png" alt="" class="wp-image-11063" srcset="https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-2b-1024x768.png 1024w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-2b-300x225.png 300w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-2b-768x576.png 768w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-2b-1536x1152.png 1536w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-2b-195x146.png 195w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-2b-50x38.png 50w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-2b-100x75.png 100w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-2b-1x1.png 1w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-2b.png 2048w" sizes="auto, (max-width:767px) 480px, (max-width:1024px) 100vw, 1024px" /></a></figure>



<h2 class="wp-block-heading">Step 3b – Configure Connection in DataGrip (Current Driver)</h2>



<p>DataGrip automatically downloads the latest Oracle Database JDBC driver. In my case version 21.1.0.0. Since version 18.3 there is an easier way to connect. The JDBC driver can access the wallet directory and its files. As a result, you do not need to configure the java.net.ssl.* JDBC properties anymore. You just have to define one additional JDBC property “TNS_ADMIN” to define the path to the wallet directory.</p>



<p>And of course, you can pass this JDBC property directly in the JDBC URL as shown in the next screenshot:</p>



<figure class="wp-block-image size-large"><a href="https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-latest-driver2.png"><img loading="lazy" decoding="async" width="1024" height="768" src="https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-latest-driver2-1024x768.png" alt="" class="wp-image-11089" srcset="https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-latest-driver2-1024x768.png 1024w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-latest-driver2-300x225.png 300w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-latest-driver2-768x576.png 768w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-latest-driver2-1536x1152.png 1536w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-latest-driver2-195x146.png 195w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-latest-driver2-50x38.png 50w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-latest-driver2-100x75.png 100w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-latest-driver2-1x1.png 1w, https://www.salvis.com/blog/wp-content/uploads/2021/02/datagrip-latest-driver2.png 2048w" sizes="auto, (max-width:767px) 480px, (max-width:1024px) 100vw, 1024px" /></a></figure>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Establishing a connection to an Autonomous Database requires a wallet. The JDBC driver needs access to this wallet. This doesn’t make things easier, but it doesn’t make them overly complicated either.</p>



<p>However, you need to deal with this additional resource regularly because the wallet has a limited lifetime. This is documented in the <code>README</code> file.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" data-code="Wallet Expiry Date
-----------------------
This wallet was downloaded on 2021-02-28 08:16:36.267 UTC.
The SSL certificates provided in this wallet will expire on 2023-03-19 21:43:22.0 UTC.
In order to avoid any service interruptions due to an expired SSL certificate, you must re-download the wallet before this date." style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #D4D4D4">Wallet Expiry Date</span></span>
<span class="line"><span style="color: #D4D4D4">-----------------------</span></span>
<span class="line"><span style="color: #D4D4D4">This wallet was downloaded on 2021-02-28 08:16:36.267 UTC.</span></span>
<span class="line cbp-line-highlight"><span style="color: #D4D4D4">The SSL certificates provided in this wallet will expire on 2023-03-19 21:43:22.0 UTC.</span></span>
<span class="line"><span style="color: #D4D4D4">In order to avoid any service interruptions due to an expired SSL certificate, you must re-download the wallet before this date.</span></span></code></pre></div>



<p>So I have to update my wallet in two years otherwise I won&#8217;t be able to connect anymore.</p>
<p>The post <a href="https://www.salvis.com/blog/2021/02/28/connecting-via-jdbc-to-the-oracle-cloud/">Connecting via JDBC to the Oracle Cloud</a> appeared first on <a href="https://www.salvis.com/blog">Philipp Salvisberg&#039;s Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Accessing Snowflake from SQL Developer</title>
		<link>https://www.salvis.com/blog/2021/01/17/accessing-snowflake-from-sql-developer/</link>
					<comments>https://www.salvis.com/blog/2021/01/17/accessing-snowflake-from-sql-developer/#comments</comments>
		
		<dc:creator><![CDATA[Philipp Salvisberg]]></dc:creator>
		<pubDate>Sun, 17 Jan 2021 19:20:44 +0000</pubDate>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JDBC]]></category>
		<category><![CDATA[Snowflake]]></category>
		<category><![CDATA[SQL Developer]]></category>
		<guid isPermaLink="false">https://www.salvis.com/blog/?p=11013</guid>

					<description><![CDATA[<p>My first day of work this year was a training day. As a participant in a &#8220;Snowflake Fundamentals&#8221; training course. I opted for the four-day, multi-week option so that I would have time to better absorb what I had just learned. Tomorrow is my third day and I plan to write more<span class="excerpt-hellip"> […]</span></p>
<p>The post <a href="https://www.salvis.com/blog/2021/01/17/accessing-snowflake-from-sql-developer/">Accessing Snowflake from SQL Developer</a> appeared first on <a href="https://www.salvis.com/blog">Philipp Salvisberg&#039;s Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>My first day of work this year was a training day. As a participant in a &#8220;Snowflake Fundamentals&#8221; training course. I opted for the four-day, multi-week option so that I would have time to better absorb what I had just learned. Tomorrow is my third day and I plan to write more about Snowflake once I complete this training.</p>



<h2 class="wp-block-heading">The Problem</h2>



<p>As a long-time Oracle SQL Developer user, I tried to connect to Snowflake via SQL Developer. SQL Developer supports the following database systems via third-party JDBC drivers:</p>



<ul class="wp-block-list">
<li>TimesTen</li>



<li>Amazon Redshift</li>



<li>Cloud</li>



<li>DB2</li>



<li>Hive</li>



<li><span class="highlight highlight-" style="background-color:Lemonchiffon;color:black;">JDBC</span>
</li>



<li>MongoDB</li>



<li>MySQL</li>



<li>PostgreSQL</li>



<li>SQLServer</li>



<li>Sybase</li>



<li>Teradata</li>
</ul>



<p>The generic &#8220;JDBC&#8221; variant sounds promising. Why is this option not shown when creating a new connection? Because this driver requires the JDBC-ODBC bridge (as does the Microsoft ACCESS driver, by the way, which is not available in non-Windows environments). SQL Developer requires JDK 8 since version 4.1. And JDK 8 does not include the <a href="https://bugs.java.com/bugdatabase/view_bug.do?bug_id=7176225">JDBC-ODBC-Bridge</a> anymore.</p>



<p>But wait. In SQL Developer Data Modeler (SDDM) there is a generic JDBC driver that can connect to any database system. Kent Graziano described in <a href="https://kentgraziano.com/2015/11/20/tech-tip-connect-to-snowflake-db-using-sqldevmodeler/">this blog post</a> how to configure it for Snowflake. And Federico Sicilia explained in <a href="https://sonra.io/2018/11/28/oracle-sql-developer-data-modeler-with-snowflake/">this blog post</a> how to deal with Snowflake-specific data types. However, SDDM accesses the database exclusively via JDBC&#8217;s DatabaseMetaData interface. That&#8217;s why a generic JDBC driver is applicable in SDDM. On the other side, SQL Developer uses mainly SQL statements, and as a result, the generic JDBC driver used in SDDM is not sufficient for use in SQL Developer. Of course, Oracle could implement the support of such a driver, but since access to third-party database systems is provided in the context of data migrations only, this is not a high priority.</p>



<p>Briefly: no generic JDBC driver, no support for Snowflake&#8217;s JDBC driver in SQL Developer.</p>



<h2 class="wp-block-heading">Options?</h2>



<p>What are the alternatives? Use other tools such as Snowflake&#8217;s web UI <a href="https://docs.snowflake.com/en/user-guide/ui-worksheet.html">worksheets</a>, the CLI <a href="https://docs.snowflake.com/en/user-guide/snowsql.html">snowsql</a> or a third-party IDE that supports Snowflake. For example <a href="https://dbeaver.io/">DBeaver</a> or <a href="https://www.jetbrains.com/datagrip/">JetBrain&#8217;s DataGrip</a>. These options work well and are recommended.</p>



<p>However, if you still want to access Snowflake from SQL Developer then I see basically two options:</p>



<ol class="wp-block-list">
<li>Write an extension that provides an additional connect panel (combo box entry) in SQL Developer</li>



<li>Write a JDBC proxy that acts like a supported driver, e.g. MySQL</li>
</ol>



<p>The first option is the most user-friendly one. In theory. In practice, it will be difficult to make it work, because third-party extensions need a UI action (e.g. own button, own menu item) to initialize the load of the extension. At least for the very first time. Once it is loaded it is cached. This makes it not that user-friendly anymore because there is no additional action the user has to trigger. I dealt with bugs in this area in other SQL Developer extensions. So I know what I&#8217;m talking about. Unless you want to introduce a dummy action, this approach is a dead end.</p>



<p>The second option sounds easy. SQL Developer allows to add third-party JDBC drivers. So let&#8217;s do that.</p>



<h2 class="wp-block-heading">The Solution</h2>



<p>As almost always, it was more work than anticipated. In the end, I have successfully implemented a JDBC proxy which is mimicking a MySQL driver and delegates requests to a configurable target JDBC driver. The target JDBC driver can be Snowflake, PostgreSQL, SQLite, H2 or MySQL. Adding more database systems should not be that difficult, as long as the JDBC driver is available on <a href="https://search.maven.org/">Maven Central</a>.</p>



<p>I released this driver as an OpenSource project. The <a href="https://github.com/Trivadis/sqldev-jdbc-proxy/blob/main/README.md">README.md</a> on GitHub explains how it works and how to install it. Hence I&#8217;m not going to repeat that in this blog post. You can download this driver from <a href="https://github.com/Trivadis/sqldev-jdbc-proxy/releases/tag/v0.1.0">here</a>.</p>



<h2 class="wp-block-heading">An Example</h2>



<p>I like to use the tables <code>DEPT</code> and <code>EMP</code> to demonstrate things. Everyone in the Oracle field knows them. And therefore no lengthy or distracting introduction is necessary. Let&#8217;s create these tables in Snowflake:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">Create tables DEPT/EMP</span><span role="button" tabindex="0" data-code="CREATE TABLE dept (
   deptno   NUMERIC(2)   CONSTRAINT pk_dept PRIMARY KEY,
   dname    VARCHAR(14)  NOT NULL,
   loc      VARCHAR(13)  NOT NULL 
);

INSERT INTO dept VALUES 
   (10, 'ACCOUNTING', 'NEW YORK'),
   (20, 'RESEARCH',   'DALLAS'),
   (30, 'SALES',      'CHICAGO'),
   (40, 'OPERATIONS', 'BOSTON');

CREATE TABLE emp (
   empno    NUMERIC(4)     CONSTRAINT pk_emp PRIMARY KEY,
   ename    VARCHAR(10)    NOT NULL,
   job      VARCHAR(9)     NOT NULL,
   mgr      NUMERIC(4),
   hiredate DATE           NOT NULL,
   sal      NUMERIC(7,2)   NOT NULL,
   comm     NUMERIC(7,2),
   deptno   NUMERIC(2)     CONSTRAINT fk_deptno REFERENCES dept,
   CONSTRAINT fk_mgr FOREIGN KEY (mgr) REFERENCES emp
);

INSERT INTO emp VALUES 
   (7839, 'KING',   'PRESIDENT', NULL, DATE '1981-11-17', 5000, NULL, 10),
   (7698, 'BLAKE',  'MANAGER',   7839, DATE '1981-05-01', 2850, NULL, 30),
   (7499, 'ALLEN',  'SALESMAN',  7698, DATE '1981-02-20', 1600, 300,  30),
   (7900, 'JAMES',  'CLERK',     7698, DATE '1981-12-03', 950,  NULL, 30),
   (7654, 'MARTIN', 'SALESMAN',  7698, DATE '1981-09-28', 1250, 1400, 30),
   (7844, 'TURNER', 'SALESMAN',  7698, DATE '1981-09-08', 1500, 0,    30),
   (7521, 'WARD',   'SALESMAN',  7698, DATE '1981-02-22', 1250, 500,  30),
   (7782, 'CLARK',  'MANAGER',   7839, DATE '1981-06-09', 2450, NULL, 10),
   (7934, 'MILLER', 'CLERK',     7782, DATE '1982-01-23', 1300, NULL, 10),
   (7566, 'JONES',  'MANAGER',   7839, DATE '1981-04-02', 2975, NULL, 20),
   (7902, 'FORD',   'ANALYST',   7566, DATE '1981-12-03', 3000, NULL, 20),
   (7369, 'SMITH',  'CLERK',     7902, DATE '1980-12-17', 800,  NULL, 20),
   (7788, 'SCOTT',  'ANALYST',   7566, DATE '1987-04-19', 3000, NULL, 20),
   (7876, 'ADAMS',  'CLERK',     7788, DATE '1987-05-23', 1100, NULL, 20);
" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">CREATE</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">TABLE</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">dept</span><span style="color: #D4D4D4"> (</span></span>
<span class="line"><span style="color: #D4D4D4">   deptno   </span><span style="color: #569CD6">NUMERIC</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">)   </span><span style="color: #569CD6">CONSTRAINT</span><span style="color: #D4D4D4"> pk_dept </span><span style="color: #569CD6">PRIMARY KEY</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">   dname    </span><span style="color: #569CD6">VARCHAR</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">14</span><span style="color: #D4D4D4">)  </span><span style="color: #569CD6">NOT NULL</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">   loc      </span><span style="color: #569CD6">VARCHAR</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">13</span><span style="color: #D4D4D4">)  </span><span style="color: #569CD6">NOT NULL</span><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">INSERT INTO</span><span style="color: #D4D4D4"> dept </span><span style="color: #569CD6">VALUES</span><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">   (</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;ACCOUNTING&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;NEW YORK&#39;</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">   (</span><span style="color: #B5CEA8">20</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;RESEARCH&#39;</span><span style="color: #D4D4D4">,   </span><span style="color: #CE9178">&#39;DALLAS&#39;</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">   (</span><span style="color: #B5CEA8">30</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;SALES&#39;</span><span style="color: #D4D4D4">,      </span><span style="color: #CE9178">&#39;CHICAGO&#39;</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">   (</span><span style="color: #B5CEA8">40</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;OPERATIONS&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;BOSTON&#39;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">CREATE</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">TABLE</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">emp</span><span style="color: #D4D4D4"> (</span></span>
<span class="line"><span style="color: #D4D4D4">   empno    </span><span style="color: #569CD6">NUMERIC</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">4</span><span style="color: #D4D4D4">)     </span><span style="color: #569CD6">CONSTRAINT</span><span style="color: #D4D4D4"> pk_emp </span><span style="color: #569CD6">PRIMARY KEY</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">   ename    </span><span style="color: #569CD6">VARCHAR</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">)    </span><span style="color: #569CD6">NOT NULL</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">   job      </span><span style="color: #569CD6">VARCHAR</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">9</span><span style="color: #D4D4D4">)     </span><span style="color: #569CD6">NOT NULL</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">   mgr      </span><span style="color: #569CD6">NUMERIC</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">4</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">   hiredate </span><span style="color: #569CD6">DATE</span><span style="color: #D4D4D4">           </span><span style="color: #569CD6">NOT NULL</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">   sal      </span><span style="color: #569CD6">NUMERIC</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">7</span><span style="color: #D4D4D4">,</span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">)   </span><span style="color: #569CD6">NOT NULL</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">   comm     </span><span style="color: #569CD6">NUMERIC</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">7</span><span style="color: #D4D4D4">,</span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">   deptno   </span><span style="color: #569CD6">NUMERIC</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">)     </span><span style="color: #569CD6">CONSTRAINT</span><span style="color: #D4D4D4"> fk_deptno </span><span style="color: #569CD6">REFERENCES</span><span style="color: #D4D4D4"> dept,</span></span>
<span class="line"><span style="color: #D4D4D4">   </span><span style="color: #569CD6">CONSTRAINT</span><span style="color: #D4D4D4"> fk_mgr </span><span style="color: #569CD6">FOREIGN KEY</span><span style="color: #D4D4D4"> (mgr) </span><span style="color: #569CD6">REFERENCES</span><span style="color: #D4D4D4"> emp</span></span>
<span class="line"><span style="color: #D4D4D4">);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">INSERT INTO</span><span style="color: #D4D4D4"> emp </span><span style="color: #569CD6">VALUES</span><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">   (</span><span style="color: #B5CEA8">7839</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;KING&#39;</span><span style="color: #D4D4D4">,   </span><span style="color: #CE9178">&#39;PRESIDENT&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">DATE</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;1981-11-17&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">5000</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">   (</span><span style="color: #B5CEA8">7698</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;BLAKE&#39;</span><span style="color: #D4D4D4">,  </span><span style="color: #CE9178">&#39;MANAGER&#39;</span><span style="color: #D4D4D4">,   </span><span style="color: #B5CEA8">7839</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">DATE</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;1981-05-01&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">2850</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">30</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">   (</span><span style="color: #B5CEA8">7499</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;ALLEN&#39;</span><span style="color: #D4D4D4">,  </span><span style="color: #CE9178">&#39;SALESMAN&#39;</span><span style="color: #D4D4D4">,  </span><span style="color: #B5CEA8">7698</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">DATE</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;1981-02-20&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">1600</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">300</span><span style="color: #D4D4D4">,  </span><span style="color: #B5CEA8">30</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">   (</span><span style="color: #B5CEA8">7900</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;JAMES&#39;</span><span style="color: #D4D4D4">,  </span><span style="color: #CE9178">&#39;CLERK&#39;</span><span style="color: #D4D4D4">,     </span><span style="color: #B5CEA8">7698</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">DATE</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;1981-12-03&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">950</span><span style="color: #D4D4D4">,  </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">30</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">   (</span><span style="color: #B5CEA8">7654</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;MARTIN&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;SALESMAN&#39;</span><span style="color: #D4D4D4">,  </span><span style="color: #B5CEA8">7698</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">DATE</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;1981-09-28&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">1250</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">1400</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">30</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">   (</span><span style="color: #B5CEA8">7844</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;TURNER&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;SALESMAN&#39;</span><span style="color: #D4D4D4">,  </span><span style="color: #B5CEA8">7698</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">DATE</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;1981-09-08&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">1500</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">,    </span><span style="color: #B5CEA8">30</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">   (</span><span style="color: #B5CEA8">7521</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;WARD&#39;</span><span style="color: #D4D4D4">,   </span><span style="color: #CE9178">&#39;SALESMAN&#39;</span><span style="color: #D4D4D4">,  </span><span style="color: #B5CEA8">7698</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">DATE</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;1981-02-22&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">1250</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">500</span><span style="color: #D4D4D4">,  </span><span style="color: #B5CEA8">30</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">   (</span><span style="color: #B5CEA8">7782</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;CLARK&#39;</span><span style="color: #D4D4D4">,  </span><span style="color: #CE9178">&#39;MANAGER&#39;</span><span style="color: #D4D4D4">,   </span><span style="color: #B5CEA8">7839</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">DATE</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;1981-06-09&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">2450</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">   (</span><span style="color: #B5CEA8">7934</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;MILLER&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;CLERK&#39;</span><span style="color: #D4D4D4">,     </span><span style="color: #B5CEA8">7782</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">DATE</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;1982-01-23&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">1300</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">10</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">   (</span><span style="color: #B5CEA8">7566</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;JONES&#39;</span><span style="color: #D4D4D4">,  </span><span style="color: #CE9178">&#39;MANAGER&#39;</span><span style="color: #D4D4D4">,   </span><span style="color: #B5CEA8">7839</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">DATE</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;1981-04-02&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">2975</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">20</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">   (</span><span style="color: #B5CEA8">7902</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;FORD&#39;</span><span style="color: #D4D4D4">,   </span><span style="color: #CE9178">&#39;ANALYST&#39;</span><span style="color: #D4D4D4">,   </span><span style="color: #B5CEA8">7566</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">DATE</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;1981-12-03&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">3000</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">20</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">   (</span><span style="color: #B5CEA8">7369</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;SMITH&#39;</span><span style="color: #D4D4D4">,  </span><span style="color: #CE9178">&#39;CLERK&#39;</span><span style="color: #D4D4D4">,     </span><span style="color: #B5CEA8">7902</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">DATE</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;1980-12-17&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">800</span><span style="color: #D4D4D4">,  </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">20</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">   (</span><span style="color: #B5CEA8">7788</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;SCOTT&#39;</span><span style="color: #D4D4D4">,  </span><span style="color: #CE9178">&#39;ANALYST&#39;</span><span style="color: #D4D4D4">,   </span><span style="color: #B5CEA8">7566</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">DATE</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;1987-04-19&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">3000</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">20</span><span style="color: #D4D4D4">),</span></span>
<span class="line"><span style="color: #D4D4D4">   (</span><span style="color: #B5CEA8">7876</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">&#39;ADAMS&#39;</span><span style="color: #D4D4D4">,  </span><span style="color: #CE9178">&#39;CLERK&#39;</span><span style="color: #D4D4D4">,     </span><span style="color: #B5CEA8">7788</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">DATE</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;1987-05-23&#39;</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">1100</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">NULL</span><span style="color: #D4D4D4">, </span><span style="color: #B5CEA8">20</span><span style="color: #D4D4D4">);</span></span>
<span class="line"></span></code></pre></div>



<p>The result in SQL Developer looks as follows:</p>



<figure class="wp-block-image"><a href="https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_create_dept_emp.png"><img loading="lazy" decoding="async" width="2048" height="1536" src="https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_create_dept_emp.png" alt="" class="wp-image-11022" srcset="https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_create_dept_emp.png 2048w, https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_create_dept_emp-300x225.png 300w, https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_create_dept_emp-1024x768.png 1024w, https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_create_dept_emp-768x576.png 768w, https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_create_dept_emp-1536x1152.png 1536w, https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_create_dept_emp-195x146.png 195w, https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_create_dept_emp-50x38.png 50w, https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_create_dept_emp-100x75.png 100w, https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_create_dept_emp-1x1.png 1w" sizes="auto, (max-width:767px) 480px, (max-width:2048px) 100vw, 2048px" /></a></figure>



<p>SQL Developer does not understand this multi-row <code>INSERT</code> statement. That&#8217;s why you see this pink wavy line on line 8. Nevertheless, SQL Developer can execute these statements. That&#8217;s excellent.</p>



<p>Now, let&#8217;s show the newly created tables in the Connections window and some details for the table <code>DEPT</code>. I like SQL Developer&#8217;s integration of SDDM and the ability to create an ad-hoc model. Here it is:</p>



<p><a href="https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_dept_model.png"><img loading="lazy" decoding="async" width="2048" height="1536" class="alignnone size-full wp-image-11023" src="https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_dept_model.png" alt="" srcset="https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_dept_model.png 2048w, https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_dept_model-300x225.png 300w, https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_dept_model-1024x768.png 1024w, https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_dept_model-768x576.png 768w, https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_dept_model-1536x1152.png 1536w, https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_dept_model-195x146.png 195w, https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_dept_model-50x38.png 50w, https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_dept_model-100x75.png 100w, https://www.salvis.com/blog/wp-content/uploads/2021/01/snowflake_dept_model-1x1.png 1w" sizes="auto, (max-width:767px) 480px, (max-width:2048px) 100vw, 2048px" /></a> From my point of view, there is no reason to avoid integrity constraints. Even if they are not enforced by the database system, they still help the user to better understand the model. In this model, you see that <code>MGR</code> is a foreign key column and it is optional. That&#8217;s nice.</p>



<h2 class="wp-block-heading">Summary</h2>



<p>The implementation of a JDBC proxy driver for accessing Snowflake from SQL Developer started as an experiment. The result works amazingly well. As a side effect, I can now access my SQLite and H2 databases from SQL Developer as well. Other IDEs, however, offer more database-specific features. Anyway, the ability to access multiple database systems from SQL Developer has some value. At least for me.</p>



<p>What do you think of it? Is this useful or just another unnecessary feature? Please post your thoughts below. Thanks.</p>
<p>The post <a href="https://www.salvis.com/blog/2021/01/17/accessing-snowflake-from-sql-developer/">Accessing Snowflake from SQL Developer</a> appeared first on <a href="https://www.salvis.com/blog">Philipp Salvisberg&#039;s Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.salvis.com/blog/2021/01/17/accessing-snowflake-from-sql-developer/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
	</channel>
</rss>
