问题标签 [bulkinsert]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
408 浏览

sql-server - 如何在 SQLServer db 中复制大量数据

我需要获取当前数据库的“快照”并将其克隆到同一个数据库中,并使用新的主键。

有问题的模式由大约 10 个表组成,但其中一些表可能包含需要复制的数十万到 100 万条记录。

我在这里有什么选择?

恐怕编写 SPROC 将需要在整个操作期间锁定有问题的数据库行(用于并发),这对其他用户来说非常烦人。假设我们可以在 sqlserver 允许的最大范围内对其进行优化,这样的操作需要多长时间?执行这么多插入是否需要 30 秒到 1 分钟?我无法锁定整个表并进行批量插入,因为其他帐户下的其他用户正在独立使用相同的表。

根据性能预期,另一种方法是将当前数据库转储到 xml 文件中,然后在后台闲暇时从该 xml 文件异步克隆数据库。这样做的明显优势是数据库仅在执行 xml 转储所需的时间内被锁定,并且插入可以在后台运行。

如果一个优秀的 DBA 可以让“克隆”操作在 10 秒内从头到尾执行,那么 xmldump/webservice 解决方案的复杂性可能不值得。但是,如果这是一个失败的原因,并且插入数百万行可能会及时膨胀,那么我宁愿立即开始使用 xml 方法。

或者也许有一个完全更好的方法?

非常感谢您提供的任何见解。

0 投票
2 回答
4742 浏览

mysql - 优化 MySQL 插入以处理数据流

我正在使用高速数据流并执行以下步骤将数据存储在 MySQL 数据库中。对于每个新到达的项目。

  • (1) 解析传入项。
  • (2) 执行几次“INSERT ... ON DUPLICATE KEY UPDATE”

我使用INSERT ... ON DUPLICATE KEY UPDATE来消除到数据库的额外往返。

在尝试提高整体性能的同时,我考虑过通过以下方式进行批量更新:

  • (1) 解析传入项。
  • (2) 使用“INSERT ... ON DUPLICATE KEY UPDATE”生成 SQL 语句并附加到文件中。

定期将文件中的 SQL 语句刷新到数据库中。

两个问题:

  • (1) 这会对数据库负载产生积极影响吗?
  • (2) 我应该如何将语句刷新到数据库中,以便仅在完全刷新后重建索引?(使用交易?)

更新:我正在使用 Perl DBI + MySQL MyISAM。

提前感谢您的任何评论。

0 投票
1 回答
913 浏览

java - 从 Informix 批量导入 Oracle

我们需要从 Informix SE 数据库中提取一些表,在 Oracle 10g 上截断表,然后用 Informix 数据填充它们。

批量导入有用吗?数据类型会冲突吗?

我想使用一个简单的 Java 可执行文件,我们可以每天安排它。Java 程序可以调用批量导入吗?有没有可以提供的例子?谢谢。

0 投票
3 回答
1391 浏览

mysql - 我可以在一个请求中插入最佳记录数或数据大小吗?

使用 Mysql 多插入语句(在一个 INSERT 语句中插入多条记录)。对于我可以一次性插入的记录数或数据大小(字节),是否有最佳数量?

0 投票
1 回答
6995 浏览

sql-server-2008 - SQL Server 2008 中的大容量复制 (bcp) 和大容量插入有什么区别?

大容量复制 (bcp) 和大容量插入有什么区别?

是否有一个开关可以为 bcp 导出数据库中所有表中的所有数据?

0 投票
2 回答
1070 浏览

sql-server-2005 - 为什么在 MS SSIS 中批量插入阻止更新?

我有一个像这样设置的 SSIS 包:

SSIS 流程 http://www.invativa.se/Images/Support/support.PNG

如果我只运行新行流,批量插入完成没有问题,但是一旦我连接实时行流,包就会无限期地停止。当我检查活动监视器时,更新新表行任务停止,被插入新行任务阻止。

为什么批量插入没有完成?我该怎么做才能使包执行?

注意:我很清楚这可能不是最佳选择,但我真的很想得到问题的答案。谢谢!

0 投票
2 回答
1285 浏览

sql-server-2005 - SQL Server 2005:提高数千或插入请求的性能。注销登录时间= 120ms

有人可以阐明 SQL Server 2005 如何处理使用 ADO.NET 2.0 的客户端发出的可能请求。下面是 SQL Trace 的简短输出。我可以看到连接池正在工作(我相信只有一个连接正在池中)。我不清楚为什么我们有这么多 sp_reset_connection 调用,即一系列:审计登录、SQL:BatchStarting、RPC:Starting 和下面 for 循环中每个循环的审计注销。我可以看到 tempdb 和 master 数据库之间不断切换,这使我得出结论,当通过基于 ConectionString 参数从池中获取创建下一个连接时,我们丢失了上下文。

我可以看到每 15 毫秒我每秒可以获得 100-200 次登录/注销(由 Profiler 同时报告)。在 15 毫秒之后,我再次获得了每秒 100-200 次登录/注销的系列。

我需要澄清这可能如何影响生产环境中复杂的插入查询。我使用 Enterprise Library 2006,代码是用 VS 2005 编译的,它是一个控制台应用程序,它解析一个包含数千行分组父子行的平面文件,在应用程序服务器上运行并在远程 SQL 上运行 2 个存储过程Server 2005 插入父记录,检索标识值并使用它调用第二个存储过程 1、2 或多次(有时数千)插入子记录。子表有近 1000 万条记录,其中有 5-10 个索引,其中一些索引覆盖非集群。有一个非常复杂的插入触发器,它将插入的详细记录复制到存档表。总而言之,我每秒只有 7 次插入,这意味着 5 万条记录可能需要 2-4 小时。

所以我的问题是,是否有某种方法可以改进记录的插入,因为公司加载了 10 万条记录并进行日常计划,并且有 SLA 来满足作为平面文件订单的客户请求,并且必须处理一些大于 1 万的大文件(快速导入)。4小时导入6万应该减少到30分钟。

我正在考虑使用 DataAdapter 的 BatchSize 来发送多个存储过程调用,SQL Bulk 插入来批量从 DataReader 或 DataTable 进行多个插入,SSIS 快速加载。但我不知道如何正确分析重新索引和统计人口,也许这需要一些时间才能完成。更糟糕的是,该公司使用最大的表进行报告和其他在线处理,并且无法删除索引。我通过将字段设置为一个值来手动管理事务,并进行事务更新,将该值更改为其他应用程序用来获取已提交行的新值。

请告知如何解决这个问题。现在,我正在尝试在单独的数据库中使用最少的日志记录和没有索引的登台表,我将尝试进行批量(大量)父子插入。我相信生产数据库具有简单的恢复模型,但它可能是完全恢复。如果我的 .NET 控制台应用程序正在使用的 DB 用户具有 bulkadmin 角色,这是否意味着它的批量插入被最低限度地记录。我知道当一个表已经聚集并且许多非聚集索引插入时,仍然会为每一行记录。

连接池正在工作,但有很多登录/注销。为什么?

for (int i = 1; i <= 10000; i++){ using (SqlConnection conn = new SqlConnection("server=(local);database=master;integrated security=sspi;")) {conn.Open(); 使用 (SqlCommand cmd = conn.CreateCommand()){ cmd.CommandText = "使用 tempdb"; cmd.ExecuteNonQuery();}}}

SQL Server Profiler 跟踪:

审核登录主控 2010-01-13 23:18:45.337 1 - 非池化
SQL:BatchStarting 使用 tempdb 主控 2010-01-13 23:18:45.337
RPC:启动 exec sp_reset_conn tempdb 2010-01-13 23:18:45.337
审核注销tempdb 2010-01-13 23:18:45.337 2 - 池
审核登录 - 网络协议主控 2010-01-13 23:18:45.383 2 - 池
化 SQL:BatchStarting 使用 tempdb 主控 2010-01-13 23:18:45.383
RPC:启动 exec sp_reset_conn tempdb 2010-01-13 23:18:45.383

审核注销 tempdb 2010-01-13 23:18:45.383 2 - 池化
审核登录 -- 网络协议主控 2010-01-13 23:18:45.383 2 - 池
化 SQL:BatchStarting 使用 tempdb 主控 2010-01-13 23:18:45.383
RPC:启动 exec sp_reset_conn tempdb 2010-01-13 23:18 :45.383
审核注销 tempdb 2010-01-13 23:18:45.383 2 - 合并

0 投票
1 回答
2177 浏览

sql-server - SQL Server 2005 大容量插入二进制类型

我有一个格式如下的表格:

我还有一个 csv 文件,由我们的一个进程从表中的数据生成,其中二进制数据导出为十六进制数据。
我尝试生成有效但非常慢的 INSERT INTO 语句。
我厌倦了 BULK INSERT 但它失败了,我怀疑这是因为二进制数据。

任何人都知道我如何使用 BULK INSERT (或类似的东西)插入包含二进制数据的大量数据?

数据示例:

谢谢。

0 投票
1 回答
2983 浏览

java - 使用 Hibernate 和 MySQL 处理 upsert 的优雅方式

我目前正在研究基于 Hibernate 和 MySQL 的批量导入功能。我的目标是为几个表提供 Upsert 功能。我发现自己编写了很多代码来处理通过键查看行是否存在并分支到正确的方法。我想知道是否有更好的方法,即类似于 SQL-Server SSIS 附带的工具,但适用于 Hibernate 和 MySQL。您使用什么工具或优雅的解决方案来处理带有 hibernate 和/或 MySQL 的批量 Upsert?

0 投票
2 回答
243 浏览

asp.net - 进行批量插入/更新

我有数据输入表格,例如...

数据输入表 http://img192.imageshack.us/img192/2478/inputform.jpg

有一些空行,其中一些有值。用户可以更新现有值,也可以在空行中填充值。

我需要在我的数据库表中映射这些值,其中一些将作为新行插入到数据库中,并且现有记录将被更新。

我需要你的建议,我怎样才能用最好的方法完成这个场景。

谢谢