tag:github.com,2008:https://github.com/brianluft/sqlnotebook/releases Release notes from sqlnotebook 2025-06-09T08:01:17Z tag:github.com,2008:Repository/52743252/v2.0.0 2025-06-09T09:22:07Z Version 2.0.0 <h3>⭐<a href="https://github.com/brianluft/sqlnotebook/releases/download/v2.0.0/SqlNotebook-64bit-2.0.0.msi">Download the 64-bit installer (recommended)</a>⭐</h3> <p>Or: <a href="https://github.com/brianluft/sqlnotebook/releases/download/v2.0.0/SqlNotebook-64bit-2.0.0.zip">Download the 64-bit portable zip</a> • <a href="https://community.chocolatey.org/packages/sqlnotebook" rel="nofollow">Install using Chocolatey</a></p> <p>Requires Windows 10 or newer on a 64-bit computer. Going forward, 32-bit systems and Windows 7 and 8 are no longer supported. Users of older machines may continue to use version 1.2.3 which should work indefinitely.</p> <h2>Changes</h2> <h3>🔄 FOREACH Loop Statement</h3> <p>Iterate through table rows with automatic variable assignment:</p> <div class="highlight highlight-source-sql notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="FOREACH (@id, @name, @email) IN customers BEGIN PRINT CONCAT('Customer: ', @name, ' (', @email, ')'); END"><pre>FOREACH (@id, @name, @email) <span class="pl-k">IN</span> customers <span class="pl-k">BEGIN</span> PRINT CONCAT(<span class="pl-s"><span class="pl-pds">'</span>Customer: <span class="pl-pds">'</span></span>, @name, <span class="pl-s"><span class="pl-pds">'</span> (<span class="pl-pds">'</span></span>, @email, <span class="pl-s"><span class="pl-pds">'</span>)<span class="pl-pds">'</span></span>); END</pre></div> <ul> <li>Variables are automatically declared and assigned values from each row</li> <li>Supports BREAK and CONTINUE statements like other loops</li> <li>Works with tables, views, and subqueries</li> </ul> <h3>💻 Command-Line Interface</h3> <p>Execute SQL Notebook scripts from the command line without opening the GUI:</p> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="SqlNotebookCmd &quot;MyNotebook.sqlnb&quot; &quot;MyScript&quot;"><pre>SqlNotebookCmd <span class="pl-s"><span class="pl-pds">"</span>MyNotebook.sqlnb<span class="pl-pds">"</span></span> <span class="pl-s"><span class="pl-pds">"</span>MyScript<span class="pl-pds">"</span></span></pre></div> <ul> <li>Perfect for automation, batch processing, and CI/CD pipelines</li> <li>Outputs results in CSV format</li> <li>Returns appropriate exit codes for success/failure</li> </ul> <h3>📝 Dynamic Script Management</h3> <p>Create and delete scripts programmatically:</p> <div class="highlight highlight-source-sql notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="-- Create a new script CREATE SCRIPT DataCleanup AS ' DELETE FROM temp_table WHERE processed = 1; PRINT ''Cleanup completed''; '; -- Execute the script EXECUTE DataCleanup; -- Remove the script when no longer needed DROP SCRIPT DataCleanup;"><pre><span class="pl-c"><span class="pl-c">--</span> Create a new script</span> CREATE SCRIPT DataCleanup <span class="pl-k">AS</span> <span class="pl-s"><span class="pl-pds">'</span></span> <span class="pl-s"> DELETE FROM temp_table WHERE processed = 1;</span> <span class="pl-s"> PRINT <span class="pl-pds">'</span><span class="pl-pds">'</span>Cleanup completed<span class="pl-pds">'</span><span class="pl-pds">'</span>;</span> <span class="pl-s"><span class="pl-pds">'</span></span>; <span class="pl-c"><span class="pl-c">--</span> Execute the script</span> EXECUTE DataCleanup; <span class="pl-c"><span class="pl-c">--</span> Remove the script when no longer needed</span> DROP SCRIPT DataCleanup;</pre></div> <ul> <li><code>CREATE SCRIPT</code> to add new scripts dynamically</li> <li><code>DROP SCRIPT</code> and <code>DROP PAGE</code> to remove scripts and pages</li> <li>Useful for generating reports, temporary procedures, and workflow automation</li> </ul> <h3>💾 Save Command</h3> <p>Save your notebook programmatically from within scripts:</p> <div class="highlight highlight-source-sql notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="-- Save to current file SAVE; -- Save to a specific file SAVE 'MyBackup.sqlnb';"><pre><span class="pl-c"><span class="pl-c">--</span> Save to current file</span> SAVE; <span class="pl-c"><span class="pl-c">--</span> Save to a specific file</span> SAVE <span class="pl-s"><span class="pl-pds">'</span>MyBackup.sqlnb<span class="pl-pds">'</span></span>;</pre></div> <ul> <li>Particularly useful in SqlNotebookCmd for persisting changes</li> <li>Must be used outside of transactions (use "None (auto-commit)" mode in GUI)</li> </ul> <h3>🦆 DuckDB Integration</h3> <p>Import data from DuckDB files with full UI support:</p> <ul> <li>Drag and drop <code>.duckdb</code> files directly into SQL Notebook</li> <li>Available in Import menu → "From file..."</li> <li>Support for both copying data and live database connections</li> </ul> <div class="highlight highlight-source-sql notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="-- Copy data from DuckDB IMPORT DATABASE 'duckdb' CONNECTION 'Data Source=C:\data\analytics.duckdb' TABLE sales_data; -- Create live connection IMPORT DATABASE 'duckdb' CONNECTION 'Data Source=C:\data\analytics.duckdb' TABLE sales_data OPTIONS (LINK: 1);"><pre><span class="pl-c"><span class="pl-c">--</span> Copy data from DuckDB</span> IMPORT DATABASE <span class="pl-s"><span class="pl-pds">'</span>duckdb<span class="pl-pds">'</span></span> CONNECTION <span class="pl-s"><span class="pl-pds">'</span>Data Source=C:<span class="pl-cce">\d</span>ata<span class="pl-cce">\a</span>nalytics.duckdb<span class="pl-pds">'</span></span> TABLE sales_data; <span class="pl-c"><span class="pl-c">--</span> Create live connection</span> IMPORT DATABASE <span class="pl-s"><span class="pl-pds">'</span>duckdb<span class="pl-pds">'</span></span> CONNECTION <span class="pl-s"><span class="pl-pds">'</span>Data Source=C:<span class="pl-cce">\d</span>ata<span class="pl-cce">\a</span>nalytics.duckdb<span class="pl-pds">'</span></span> TABLE sales_data OPTIONS (LINK: <span class="pl-c1">1</span>);</pre></div> <h3>🗄️ Enhanced SQLite Support</h3> <p>Expanded SQLite file compatibility:</p> <ul> <li>Open SQLite databases (<code>.db</code>, <code>.sqlite</code>, <code>.sqlite3</code>) directly via File → Open</li> <li>Import SQLite tables using the same interface as other databases</li> <li>Seamless integration with your existing SQLite workflows</li> </ul> electroly tag:github.com,2008:Repository/52743252/v1.2.3 2025-06-09T09:19:54Z v1.2.3 <p>Requires Windows 7 or newer.</p> <p>Windows 7 users: <a href="https://sqlnotebook.com/windows-7.html" rel="nofollow">Service Pack 1 and security update KB3063858</a> are required.</p> <p><strong>Changes</strong></p> <ul> <li>Arm64 computers are now supported. Use the downloads labeled "arm64".</li> <li>Small joins to remote database tables are now faster.</li> <li>Updated to <a href="https://www.sqlite.org/releaselog/3_46_0.html" rel="nofollow">SQLite 3.46.0</a>.</li> </ul> electroly tag:github.com,2008:Repository/52743252/v1.2.2 2024-06-19T05:15:05Z v1.2.2 <p>Requires Windows 7 or newer.</p> <p>Windows 7 users: <a href="https://sqlnotebook.com/windows-7.html" rel="nofollow">Service Pack 1 and security update KB3063858</a> are required.</p> <p><strong>Changes</strong></p> <ul> <li>32-bit Windows is now supported. If you have an older 32-bit computer, use the "32bit" download below.</li> <li>Updated to <a href="https://www.sqlite.org/releaselog/3_44_0.html" rel="nofollow">SQLite 3.44.0</a>.</li> </ul> electroly tag:github.com,2008:Repository/52743252/v1.2.1 2023-11-05T18:42:45Z v1.2.1 <p>Requires 64-bit Windows 7 or newer.</p> <p>Windows 7 users: <a href="https://sqlnotebook.com/windows-7.html" rel="nofollow">Service Pack 1 and security update KB2533623</a> are required.</p> <p><strong>Changes</strong></p> <ul> <li>Fixed an error message when saving a notebook in certain situations. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1238227628" data-permission-text="Title is private" data-url="https://github.com/brianluft/sqlnotebook/issues/48" data-hovercard-type="issue" data-hovercard-url="/brianluft/sqlnotebook/issues/48/hovercard" href="https://github.com/brianluft/sqlnotebook/issues/48">#48</a>)</li> <li>No longer inserts nonprintable control characters when pressing Ctrl+? key combinations. (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="1443191777" data-permission-text="Title is private" data-url="https://github.com/brianluft/sqlnotebook/issues/52" data-hovercard-type="issue" data-hovercard-url="/brianluft/sqlnotebook/issues/52/hovercard" href="https://github.com/brianluft/sqlnotebook/issues/52">#52</a>)</li> <li>Fixed an error message when a query result includes a zero-length blob.</li> <li>Updated to <a href="https://www.sqlite.org/releaselog/3_40_1.html" rel="nofollow">SQLite 3.40.1</a>.</li> </ul> electroly tag:github.com,2008:Repository/52743252/v1.2.0 2023-01-08T03:13:05Z v1.2.0 <p>Requires 64-bit Windows 7 or newer.</p> <p>Windows 7 users: <a href="https://sqlnotebook.com/windows-7.html" rel="nofollow">Service Pack 1 and security update KB2533623</a> are required.</p> <p><strong>Changes</strong></p> <ul> <li>When importing CSV/XLS, you can now set the type for multiple selected columns at once. You may also opt to automatically detect column types. (<a href="https://github.com/electroly/sqlnotebook/issues/45" data-hovercard-type="issue" data-hovercard-url="/brianluft/sqlnotebook/issues/45/hovercard">#45</a>)</li> <li>You can now import non-public schemas in PostgreSQL. (<a href="https://github.com/electroly/sqlnotebook/issues/47" data-hovercard-type="issue" data-hovercard-url="/brianluft/sqlnotebook/issues/47/hovercard">#47</a>)</li> <li>Fixed handling of blank or missing column names in CSV/XLS files.</li> <li>Updated to <a href="https://www.sqlite.org/releaselog/3_38_5.html" rel="nofollow">SQLite 3.38.5</a>.</li> </ul> electroly tag:github.com,2008:Repository/52743252/v1.1.0 2022-05-08T21:23:24Z v1.1.0 <p>Requires 64-bit Windows 7 or newer.</p> <p>Windows 7 users: <a href="https://sqlnotebook.com/windows-7.html" rel="nofollow">Service Pack 1 and security update KB2533623</a> are required.</p> <p><strong>Changes</strong></p> <ul> <li>Updated to <a href="https://www.sqlite.org/releaselog/3_38_0.html" rel="nofollow">SQLite 3.38.0</a>.</li> <li>Added the crypto, fuzzy, and stats extensions from <a href="https://github.com/nalgeon/sqlean/">Anton Zhiyanov's sqlean project</a>.</li> <li>Enabled the <a href="https://sqlite.org/lang_corefunc.html#load_extension" rel="nofollow">load_extension function</a> for loading custom SQLite extensions.</li> <li>You can now drag-and-drop a CSV or Excel file onto the SQL Notebook window to import it.</li> </ul> electroly tag:github.com,2008:Repository/52743252/v1.0.1 2022-03-04T06:37:30Z v1.0.1 <p>Requires 64-bit Windows 7 or newer.</p> <p>Windows 7 users: <a href="https://sqlnotebook.com/windows-7.html" rel="nofollow">Service Pack 1 and security update KB2533623</a> are required.</p> <p><strong>Changes</strong></p> <ul> <li>On Windows 7, an error message was preventing the application from launching. This has been fixed. Windows 7 users, please see the <a href="https://sqlnotebook.com/windows-7.html" rel="nofollow">System Requirements for Windows 7</a>.</li> </ul> electroly tag:github.com,2008:Repository/52743252/v1.0.0 2021-12-16T07:48:26Z v1.0.0 <p>Requires 64-bit Windows 7 (or newer).</p> <p><strong>Changes</strong></p> <ul> <li>This is the first stable release. All aspects of the application have been improved and polished.</li> </ul> electroly tag:github.com,2008:Repository/52743252/v0.6 2021-12-13T05:36:02Z v0.6 <p>Requires 64-bit Windows 7 with <a href="https://dotnet.microsoft.com/download/dotnet-framework" rel="nofollow">.NET Framework 4.6</a> (or newer).</p> <p><strong>Changes</strong></p> <ul> <li>First public release.</li> </ul> electroly tag:github.com,2008:Repository/52743252/v0.5 2016-04-25T08:26:02Z v0.5 <ul> <li>Fixed exception when binding NULL to query parameter.</li> <li>Added additional help pages.</li> <li>Removed "root_" prefix from imported JSON table names.</li> <li>Installer and application are now signed.</li> </ul> electroly