gpt4 book ai didi

mysql - C中一个sql语句中的多个插入

转载 作者:太空宇宙 更新时间:2023-11-04 04:11:36 26 4
gpt4 key购买 nike

我想一次性将 6406 条记录插入到一​​个表中,而无需准备和执行单个记录。 (最快的)。在下面的代码中,我希望每次插入时更改“i”

我什么都试过了

for( int i = 0; i < 6406 ; i++)
{
sprintf( query, "INSERT INTO table1"
"(table_id, curr_id, cur_ref_id) "
"VALUES (%d,%d,%d)",
table_id,
i,
table_id);

//assemble query
DBH->prepare(query);
}
DBH->execute();

为表 1 插入准备失败

最佳答案

我对 MySQL C API 的内存有点模糊,但 IIRC 看起来应该是这样的:

MYSQL_STMT* stmt = mysql_stmt_init(MYSQL *mysql);
mysql_stmt_prepare(stmt,
"INSERT INTO table1 (table_id, curr_id, cur_ref_id) VALUES (?,?,?)",
len_of_previous_argument);

MYSQL_BIND params[3];
memset(params, 0, sizeof(params));
params[0].buffer_type = MYSQL_TYPE_LONG;
params[1].buffer_type = MYSQL_TYPE_LONG;
params[2].buffer_type = MYSQL_TYPE_LONG;

params[0].buffer = &table_id;
params[2].buffer = &table_id;

mysql_bind_param(stmt, params);

mysql_autocommit(conn, 0);
for ( int i = 0; i < 6406 ; i++) {
params[1].buffer = &i;
mysql_stmt_execute(stmt);
}
mysql_commit(conn);

mysql_stmt_close(stmt);

您显然想要加入一些错误处理,但这应该给您基本的想法。

只有一个参数并在查询字符串中编码 table_id 值可能会更快,但我很懒,你显然已经知道如何做到这一点 (snprintf 应该有 "(%d,?,%d)",然后将结果传递给 mysql_stmt_prepare,那么 params 数组将只有一个项目)。

关于mysql - C中一个sql语句中的多个插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56695741/

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