我在批量加载记录时遇到了一些麻烦,比cursor.executemany
允许的更快。我希望这里用常规MonetDB记录的批量操作可以工作,所以我尝试了一个导出作为测试。例:cursor.execute("COPY SELECT * FROM foo INTO '/file/path.csv'")
;除非文件已经存在,否则不会引发错误,但结果文件总是0字节。我尝试了同样的文件STDOUT
,它没有打印任何东西。
这些COPY
命令意味着工作在嵌入式版本?
注意:这是我第一次使用与MonetDB相关的东西。作为SQLite的粉丝和Amazon Redshift的普通用户,这看起来是一个整洁的项目。不确定MonetDB/e是否与MonetDB/e相同-前者最近似乎更活跃?
通过COPY INTO
命令导出数据在MonetDB/e中应该是可能的,是的。
但是,此功能目前无法工作。我能够重现你的问题,即COPY INTO
创建数据应该导出到的文件,但不写数据。这在普通的MonetDB中不会发生。
我们的团队已经通知了这个问题,我们正在调查它。谢谢你的提醒!
PS:关于你对MonetDB/e vs MonetDBLite的怀疑:我们的团队不再开发和维护MonetDBLite。两者都是使用MonetDB作为核心引擎的嵌入式数据库,但monetdbite已弃用。在学习了MonetDBLite的一些注意事项后,我们的团队正在开发下一代嵌入式数据库。
因此,对于您的嵌入式数据库需求,您应该遵循我们的MonetDB/e项目。
我已经创建了一个测试:https://github.com/MonetDBSolutions/monetdbe-examples/blob/CI/C/copy_into.c
也在GitHub上提交了一个bug报告:https://github.com/MonetDB/MonetDB/issues/7058
我们正在调查这个问题。