<?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>Snowflake Archives - Philipp Salvisberg&#039;s Blog</title>
	<atom:link href="https://www.salvis.com/blog/tag/snowflake/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.salvis.com/blog/tag/snowflake/</link>
	<description>Database-centric development</description>
	<lastBuildDate>Wed, 08 Nov 2023 13:48:35 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://www.salvis.com/blog/wp-content/uploads/2014/04/favicon.png</url>
	<title>Snowflake Archives - Philipp Salvisberg&#039;s Blog</title>
	<link>https://www.salvis.com/blog/tag/snowflake/</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/snowflake/feed/"/>
	<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 fetchpriority="high" 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="(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 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="(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>
