我正在寻找一种方法来插入大的CSV (百万行和20-30个字段)到tarantool数据库以最快的方式,最好是通过一个连接器(python或c#),并访问空间,稍后在应用程序中使用python/c#。
我是第一次接触tarantool,当我查看tarantool的文档时,我在这里找到了CSV内置模块https://www.tarantool.io/en/doc/2.5/reference/reference_lua/csv/,但这实际上并没有在tarantool中创建一个空间。
然后我尝试创建空间,然后通过python应用程序解析csv文件并将每条记录插入到空间中,如下所示
tester = connection.space('tester')
tester.insert((<data>))但这并不是很好的性能智慧,它非常慢。将CSV输入导入到性能更好的tarantool中的最佳方式是什么?
谢谢。
发布于 2020-07-23 13:55:38
Tarantool csv内置模块仅用于读取csv。是的,如果你想创造空间,你应该用手来做。
我建议你尝试使用批量插入:
-- You need to create stored lua procedure
-- And of course it's only a draft of such function
function batch_insert(list)
box.begin()
for _, record in ipairs(list) do
space:replace(record)
end
box.commit()
end然后就可以从python客户端调用这个过程了。
connection.call('batch_insert', several_csv_rows)阅读tarantool文档中有关Tarantool存储过程的更多信息(例如https://www.tarantool.io/en/doc/1.10/getting_started/getting_started_connectors/#executing-stored-procedures)
https://stackoverflow.com/questions/62998846
复制相似问题