问题标签 [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 投票
5 回答
11730 浏览

ruby-on-rails - 高效的批量更新 Rails 数据库

我正在尝试构建一个 rake 实用程序,它会经常更新我的数据库。

这是我到目前为止的代码:

我遇到的问题是这需要几分钟才能输入 10 万多个条目。我想找到一种更有效的方式来更新我的数据库。理想情况下,这将保持独立于数据库类型,但如果不是,我的生产服务器将在 MySQL 上运行。

感谢您的任何见解。

0 投票
1 回答
633 浏览

sql-server - Windows7 上的 SQL Server 批量插入问题

我有一个使用 SQL Server Express 2005 SP3 的应用程序。该应用程序分发给数百个用户,每个用户都运行 XP。但是,我们公司将很快迁移到 Windows7。我的应用程序使用 SQL Server 中的批量插入操作,并且在 XP 中运行良好。但是,在 Windows7 中,我需要以管理员身份打开 SQL Server Management Studio,并执行以下命令才能使批量插入操作正常运行:

显然,在每个用户的 PC 上手动执行此操作是不切实际的。所以,我想知道如果用户没有以管理员身份运行我的应用程序,我该如何编写脚本。是否可以在安装期间在 SQL Server 引导程序包中设置?现有的安装呢?

0 投票
1 回答
5774 浏览

linq-to-sql - 使用 LINQ to SQL 执行 INSERT INTO ... SELECT

我试图弄清楚是否可以使用 LINQ to SQL 执行“插入...选择”类型的命令。一些 LINQ to SQL 代码可以让我向数据库发送一个 SQL 命令,该命令会将多行插入给定的表中。

例如,如何使 LINQ to SQL 将以下 T-SQL 语句发送到 SQL Server 数据库?

我当然可以通过使用该DataContext.ExecuteCommand功能来实现这一点,但这将立即执行,而无需利用您获得的自动事务处理DataContext.SubmitChanges。除了这个之外,我还有一系列更新,我希望它们全部回滚以防出错。

有任何想法吗?

更新:这是实际代码:

快速解释:T_EDR_FILEBODies实体映射到一个数据库表,该表基本上存储了我们导入的一些文本文件的内容。一条记录对应文本文件中的一行。

我要做的是通过从一个文件中复制记录来创建文件内容的过滤版本,给它们一个新的文件 ID ( ID_EDR=id_edr_filt),但过滤掉一些行。LINQ to SQL 实体是到数据库表的直接映射。到目前为止,我没有向我的数据上下文添加任何代码。它们确实有主键,否则我将无法对它们进行插入(我在某处读过,如果我摆脱了主键,我将能够摆脱该异常,但是如您所见,那不会在我的情况下工作)。

当我运行它时,我得到以下异常抛出InsertAllOnSubmit

不允许在查询中显式构造实体类型“T_EDR_FILEBODY”。

我想我明白在查询中显式构造实体会出现问题。查询返回的实体具有更改跟踪,调用 submitchanges 时会将更改转换到数据库中。但是,您如何将在客户端创建的实体上的更改转换到数据库中呢?但这真的意味着您永远无法使用 LINQ to SQL 执行 INSERT INTO...SELECT 类型的命令吗?

0 投票
1 回答
947 浏览

asp.net - 使用适用于 .NET 的 Mysql 连接器进行批量插入

我想知道 MySql 连接器上是否有任何可用的批量插入功能。我确实必须创建数百万条记录,我相信批处理将是一个很棒的功能。

我正在开发一个带有 MySql 数据存储的 MVC 项目。

谢谢,莱昂纳多

0 投票
4 回答
108789 浏览

sql - 如何将文件批量插入到文件名是变量的 *temporary* 表中?

我有一些这样的代码,用于将数据文件批量插入到表中,其中数据文件和表名是变量:

这适用于标准表,但现在我需要做同样的事情来将数据加载到临时表中(例如,#MyTable)。但是当我尝试这个时,我得到了错误:

我认为问题是由于该BULK INSERT语句是动态构建然后使用执行的EXEC,并且在调用#MyTable的上下文中无法访问。EXEC

我需要构造这样的BULK INSERT语句的原因是我需要将文件名插入到语句中,这似乎是唯一的方法。所以,似乎我可以一个变量文件名,或者使用一个临时表,但不能同时使用两者。

有没有另一种方法来实现这一点 - 也许通过使用OPENROWSET(BULK...)


更新: 好的,所以我听到的是 BULK INSERT 和临时表对我不起作用。感谢您的建议,但在我的情况下,将我的更多代码移动到动态 SQL 部分是不切实际的。

尝试过OPENROWSET(BULK...),似乎遇到了同样的问题,即它无法处理变量文件名,我需要像以前一样动态地构造 SQL 语句(因此无法访问临时表)。

所以,这让我只有一个选择,即使用非临时表并以不同的方式实现进程隔离(通过确保任何时候只有一个进程可以使用这些表 - 我可以想到几种方法来去做)。

它很烦人。按照我原本打算的方式来做会方便得多。只是其中一件应该是微不足道的事情,但最终会浪费你一整天的时间......

0 投票
6 回答
951 浏览

sql-server - 在 SQL Server 中对大量数据执行操作的最佳方法是什么?

我们需要在我们的数据库中执行以下操作:

有一个表 A 的列 B_ID 是表 B 的外键。表 A 中有许多行具有相同的 B_ID 值,我们希望通过克隆 B 中的相应行并重定向从 A 到它们的行。

所有这一切都相对简单,我们已经创建了一个脚本,通过迭代游标并调用存储过程来克隆表 B 中的行来解决这个问题。现在的问题是 A 和 B 表都很大,而且还有一个表 A 中的大量组指向 B 中的同一行。

我们最终得到的是(在执行几分钟后)填满事务日志并崩溃。我们甚至尝试将工作分成合理大小的批次并逐个运行,但这最终也会填满日志。

除了以某种方式清理日志之外,是否有某种方法可以更快地处理 SQL Server 中数据的批量插入/更新,并且根本不会破坏日志?

0 投票
2 回答
3457 浏览

sql-server - SQL Server 2008 - 在 T-SQL 中执行批处理作业和批量插入

我面临一个有趣的问题,我什至不确定是否可能:

我需要在 SQL Server 2008 中创建一个存储过程,执行时执行以下操作:

  1. 执行批处理文件 - 位于 SQL Server 上(即 C:\Mybatchfile.bat) - 此批处理文件会将单个文本文件输出到 SQL Server 上的目录(即 C:\Output\BatchFileOutput1.txt)。

  2. 将文本文件的内容批量插入我的数据库中的表中。

  3. 从服务器中删除文本文件。

在我真正开始深入研究如何实现这一目标之前,这是否可能?

提前致谢

0 投票
3 回答
11585 浏览

sql-server - SQL Server 2008 - 将整个文本文件批量插入一个字段

我有一个包含格式化文本(只是换行符、回车和制表符)的文本文件 (txt) 它还包含德语字符。

我想使用 T-SQL 中的批量插入注释将文本文件读入数据库表中的一个字段。

我运行了这个命令:

问题在于它将文本文件的每一行读入 Temp 表中的新行。我希望它将整个文件(格式和全部)读入一行。

此外,德语字符似乎丢失了 - 由结果视图中的不可打印字符默认替换。

任何人都知道如何实现这一目标?

谢谢。

0 投票
4 回答
6072 浏览

iphone - 批量插入到 iphone 上的 sqlite db

我正在插入一批 100 条记录,每条记录都包含一个包含任意长 HTML 字符串的字典,老天,它很慢。在 iphone 上,runloop 在此事务期间阻塞了几秒钟。我唯一的办法是使用另一个线程吗?我已经使用了几个从 HTTP 服务器获取数据,并且 sqlite 文档明确不鼓励使用数据库进行线程化,即使它应该是线程安全的......如果修复的话,我是否做错了什么?大幅减少完成整个操作所需的时间?

0 投票
2 回答
2053 浏览

php - 将二进制数据传递给 SQL Server 2008 中的存储过程

我正在尝试找出一种将文件存储在数据库中的方法。我知道建议将文件存储在文件系统而不是数据库上,但我正在从事的工作更喜欢使用数据库来存储这些图像(文件)。

也有一些限制。我不是管理员用户,我必须创建存储过程来执行所有命令。到目前为止,这并没有太大的困难,但我无法终生建立一种在数据库中存储文件(图像)的方法。

当我尝试使用 BULK 命令时,我收到一条错误消息,提示“您没有使用批量加载语句的权限”。批量实用程序似乎是将文件上传到数据库的简单方法,但如果没有权限,我必须想办法解决问题。

我决定使用带有文件上传输入类型的 HTML 表单并使用 PHP 处理它。PHP 调用存储过程并传入文件的内容。问题是现在它说参数的最大长度只能是 128 个字符。

现在我完全被困住了。我没有使用批量命令的权限,而且我可以传递给 SP 的参数的最大长度似乎是 128 个字符。

我预计会遇到问题,因为二进制字符和 ascii 字符不能很好地混合在一起,但我处于死胡同......

谢谢