导入和导出在DuckDB中由于版本更改而发生变化

huangapple go评论115阅读模式
英文:

IMPORT and EXPORT in Duckdb due to change of version

问题

我一直在使用DuckDB并有一个数据库,但最近我更新了DuckDB,无法使用DuckDB,出现以下错误。

> duckdb.IOException: IO错误:尝试读取版本号为39的数据库文件,但我们只能读取版本43。
该数据库文件是使用DuckDB版本v0.6.0或v0.6.1创建的。

> DuckDB的存储尚不稳定;新版本的DuckDB无法读取旧的数据库文件,反之亦然。
存储将在版本1.0发布时稳定下来。

>目前,我们建议您在支持的DuckDB版本中加载数据库文件,然后在当前版本的DuckDB上使用EXPORT DATABASE命令,然后使用IMPORT DATABASE。

>有关更多信息,请参见存储页面:https://duckdb.org/internals/storage

尽管我已经尝试过导入和导出,但我无法找到在Python中使用相同操作的正确语法。

英文:

I have been using duckdb and have a database but recently I updated duckdb and not able to use the duckdb and getting following error.

> duckdb.IOException: IO Error: Trying to read a database file with version number 39, but we can only read version 43.
The database file was created with DuckDB version v0.6.0 or v0.6.1.

>The storage of DuckDB is not yet stable; newer versions of DuckDB cannot read old database files and vice versa.
The storage will be stabilized when version 1.0 releases.

>For now, we recommend that you load the database file in a supported version of DuckDB, and use the EXPORT DATABASE command followed by IMPORT DATABASE on the current version of DuckDB.

>See the storage page for more information: https://duckdb.org/internals/storage

Although I have tried to IMport and Export I am not able to find right syntax for the same using python

答案1

得分: 2

DuckDB的新版本目前不向后兼容。

您必须使用旧版本的DuckDB导出数据库,然后使用新版本的DuckDB导入数据库。

要开始,您可以使用pip安装与创建要导出的数据库所使用的DuckDB版本相匹配的特定版本。例如,如果数据库是使用DuckDB版本0.6.0创建的,您可以使用以下命令安装该版本:pip install duckdb==0.6.0

接下来,您可以使用Python连接到要导出的数据库,并执行EXPORT DATABASE命令将数据库保存到一个目录:

import duckdb
conn = duck.connect('<databasefilename>')
conn.execute("EXPORT DATABASE '<directory to save exported database>'")

一旦导出所有所需的数据库,您可以使用以下命令升级到DuckDB的最新版本:pip install --upgrade duckdb

最后,您可以使用新版本的DuckDB创建新的数据库文件,并使用以下命令导入已导出的数据库:

import duckdb
conn=duckdb.connect('<newdbfilename>')
conn.execute("IMPORT DATABASE '<directory where exported database was saved>'")

有了这些说明,您应该能够升级到DuckDB的新版本,同时仍然保留对现有数据库的访问。

英文:

Duckdb new versions are currently not backward compatible.

You must use EXPORT database using old version of duckdb and then IMPORT database using new version of duckdb

To start, you can use pip to install the specific version of DuckDB that matches the version used to create the database you want to export. For example, if the database was created using version 0.6.0 of DuckDB, you can install that version with the command:pip install duckdb==0.6.0

Next, you can connect to the database you want to export using Python and execute the EXPORT DATABASE command to save the database to a directory:

import duckdb
conn = duck.connect(&#39;&lt;databasefilename&gt;&#39;)
conn.execute(&quot;EXPORT DATABASE &#39;&lt;directory to save exported database&gt;&quot;)

Once you have exported all the required databases, you can upgrade to the latest version of DuckDB with the command:pip install --upgrade duckdb

Finally, you can create a new database file with the new version of DuckDB and import the exported databases with the command:

import duckdb
conn=duckdb.connect(&#39;&lt;newdbfilename&gt;&#39;)
conn.execute(&quot;IMPORT DATABASE &#39;&lt;directory where exported database was saved&gt;&#39;&quot;)

With these instructions, you should be able to upgrade to a new version of DuckDB while still retaining access to your existing databases.

huangapple
  • 本文由 发表于 2023年3月12日 17:52:05
  • 转载请务必保留本文链接:https://go.coder-hub.com/75712317.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定