- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个插入大量数据的脚本。此数据主要是前一个插入的复制,但至少有一个值不同。因此,我准备语句并绑定(bind)参数以执行和重复。
但是,我尝试将其写入准备好的批量插入,一次插入 1000 行顶部。不幸的是,我无法让它工作。我现在使用的代码只是一次插入整个数据。然而,这是不希望的,因为数据量可能比测试的要大得多。
我现在使用的代码(一次性批量插入):
$Data = array(
array("1", "2", "3", "4"),
array("1", "2", "3", "5"),
array("1", "2", "3", "6"),
array("1", "2", "3", "7"),
array("1", "2", "3", "8"),
//ETC
);
//AS YOU CAN SEE, ONLY COL4 CHANGES
$sql = $mysqli->prepare("INSERT INTO `Table` (Col1, Col2, Col3, Col4) VALUES ".implode(', ', array_fill(0, count($Data), "(?, ?, ?, ?)")));
foreach ($Data as $InsertData) {
$sql->bind_param('iiii', $InsertData[0], $InsertData[1], $InsertData[2], $InsertData[3]);
}
$sql->execute();
我想要实现的是,数据将使用上述准备好的语句插入,但限制为每批处理 1000(或任何其他数字)。我无法让它工作。我尝试使用 array_splice
和其他方法,但我无法让它工作。
最佳答案
您应该考虑使用 LOAD DATA INFILE。
它可能比对成批行使用 INSERT 快得多,即使您必须先写出一个临时文件。
$Data = array(
array("1", "2", "3", "4"),
array("1", "2", "3", "5"),
array("1", "2", "3", "6"),
array("1", "2", "3", "7"),
array("1", "2", "3", "8"),
//ETC
);
$tempname = tempnam("/tmp", "data");
$fp = fopen($tempname, "w");
foreach ($Data as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
if ($mysqli->query("
LOAD DATA INFILE '$tempname' INTO TABLE `Table`
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'
") === false) {
error_log($mysqli->error);
}
unlink($tempname);
阅读https://dev.mysql.com/doc/refman/5.7/en/load-data.html确保您了解 LOCAL
选项以及 local_infile
和 secure_file_priv
配置选项。
关于PHP MySQL Bulk inserts by BATCH with prepared statements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43721973/
我们在Salesforce中有批量的短信Api代码吗?我在Twilio文档中没有找到。请在相同的指南中找到。。我已经搜索了Twilio文档和谷歌它,但没有找到相同的预期结果。是否有任何相关的帖子、代码
我正在尝试使用 libusb1.0.9 实现用户空间 USB 驱动程序。我有 lpc2148 蓝板(ARM7)。这个板由 Bertrik Sikken 先生加载了开源 USB 堆栈/固件。现在我的用户
在python脚本中, 我正在尝试 elasticsearch.helpers.bulk 来存储多个记录。 我将从另一个软件中获取json格式的字符串,并将其附加到源代码部分中 我通过此answer获
我正在管道中使用附件处理器Attachment Processor。 一切正常,但是我想做多个帖子,然后尝试使用bulk API。 批量工作也很好,但是我找不到如何发送url参数“pipeline =
我正在尝试基于简单的文本文件创建批量文件夹。 os.makedir 有助于创建新文件夹,但我不确定如何将 newpath 变量与文件夹列表合并。以下是我正在尝试的。我知道代码有语法错误。因此需要一些帮
代码如下: -- Created on 2010/11/04 by WANGNAN declare -- Local variables here&nb
我想知道是否使用 BULK COLLECT INTO多个集合保证行中的相应列在嵌套表中具有相同的索引。 例子: CREATE TABLE tx AS SELECT CAST(level AS INT)
我对以下 PL/SQL BULK-COLLECT 进行了修补,它对大表 (>50.000.000) 的更新速度惊人地快。唯一的问题是,它不执行每个表剩余 < 5000 行的更新。 5000 是 FET
我正在使用 BULK INSERT导入 CSV 文件。 CSV 文件中的一列包含一些包含分数的值(例如 1m½f )。 我不需要对分数进行任何数学运算,因为这些值仅用于显示目的,所以我将列设置为 nv
以下是我尝试上载具有一百万条记录的文件时遇到的一些问题。帮助我解决问题。当我尝试在博客中找到解决方案时,所有人都建议修改一些逻辑。但是我直接使用redisgraph-bulk-loader实用程序。
我将不得不使用 SQL Server 的 BULK INSERT 命令重写一些相当旧的代码,因为架构已更改,我突然想到也许我应该考虑改用 TVP 切换到存储过程,但我想知道是什么它可能对性能产生影响。
我需要在 azure 函数中发送批量补丁请求。我已经阅读了他们关于名为“bulk( )”的函数的非常简约的文档,这就是我目前拥有的 const response = await container.i
我试图将文档批量插入索引中。我需要_id等于我要插入的特定字段。我正在使用ES v6.6 POST productv9/_bulk { "index" : { "_index" : "productv
假设我有1000个用户,每个用户有50个文档(每个文档嵌入具有名称和电子邮件的用户对象),我需要为一组用户更新名称和电子邮件。 我想使用Bulk Api,但似乎bulk API仅支持“_id”作为参数
我正在使用curl将apache日志作为文档添加到使用批量API的elasticsearch中。我发布以下内容: {"index": {"_type": "apache", "_id": "123",
我正在使用 Marklogic 8.0.6,我想知道我们是否可以批量删除。例如,我想删除 150 000 个文档,这些文档可以通过 URI 列表或通用属性(字段 COUNTRY=US 和 COLOR=
我正在使用Elasticsearch版本6.7.2,但出现错误429 { "error": { "root_cause": [ {
我是Elasticsearch的新手。 我需要使用NEST api使用批量选项插入文档。 我必须从表中索引5000个文档。以下是我用于批量索引编制的代码。 public ActionResult Cr
我正在尝试使用带有格式文件的 BULK INSERT 将 .CSV 文件导入到 SQL Server 表中。我可以导入它,但任何拉丁字符都会作为奇怪的字符导入。我为自己完成这个个人项目感到非常自豪,但
我试图找出为什么我使用的 BULK INSERT 命令无法识别该命令中使用的 FORMAT 和 FIELDQUOTE 选项。 BULK INSERT dbo.tblM2016_RAW_Current_
我是一名优秀的程序员,十分优秀!