gpt4 book ai didi

mysql - 从Lua表向数据库(Mysql)插入数据

转载 作者:行者123 更新时间:2023-11-29 23:33:35 24 4
gpt4 key购买 nike

我正在尝试向 mysql 数据库中的表提供 1 000 000 行之类的内容。我正在使用 Lua 和函数:

conn:execute("INSERT INTO Orders (dates, ordertype) VALUES ('"..tab[1][dateIndex]......

对于每一行。问题是它很长,我确实需要更高的效率。您还有其他解决方案吗(也许创建 .csv 并使用 mysql 加载它,也许有一个函数可以更有效地在数据库中加载矩阵,...)。使用 Lua 是一种义务,因为我正在使用现有的项目。

感谢您的帮助

最佳答案

首先,您可以停止在每次插入时提交。

您也可以使用准备好的查询。它由Lua-DBI和Lua-ODBC提供我使用 ODBC。

local env = odbc.environment()
lcoal db = env:driverconnect{
Driver = IS_WINDOWS and '{MySQL ODBC 5.2 ANSI Driver}' or 'MySQL';
db='test';
uid='root';
};

cnn:set_autocommit(false)
local stmt = db:prepare("INSERT INTO orders (dates, ordertype) VALUES(?,?)")
for i, row in ipairs(tab) do
stmt:bindstr(row[dateIndex])
...
stmt:execute()
if i % 1000 == 0 then
cnn:commit()
end
end

ODBC 还提供变量。可能会更快,因为它们不会每次都调用 SQLBindParam。

   -- create stmt as preview
...
local dateValue = odbc.date():bind_param(stmt, 1)
local orderValue = odbc.ulong():bind_param(stmt, 2)

for i, row in ipairs(tab) do
dateValue:set(row[1]) -- data is yyyy-mm-dd e.g. 2014-10-14
orderValue:set(row[2])
stmt:execute()
...
-- same as preview

关于mysql - 从Lua表向数据库(Mysql)插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26464678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com