Questions tagged «bulkinsert»

同时将多个行插入数据库的行为。


7
如何加快PostgreSQL中的插入性能
我正在测试Postgres插入性能。我有一张表,其中一列以数字作为其数据类型。也有一个索引。我使用以下查询填充数据库: insert into aNumber (id) values (564),(43536),(34560) ... 通过上面的查询,我一次非常快地一次插入了400万行10,000。数据库达到600万行后,性能每15分钟急剧下降到100万行。有什么技巧可以提高插入性能?我需要此项目的最佳插入性能。 在具有5 GB RAM的计算机上使用Windows 7 Pro。

11
将CSV文件导入SQL Server
我正在寻找使用导入.csv文件到SQL Server的帮助BULK INSERT,我有几个基本问​​题。 问题: CSV文件数据,之间(例如:描述)之间可能有(逗号),那么如何进行导入处理这些数据? 如果客户端从Excel创建CSV,则用逗号括起来的数据""(用双引号引起来)(如下例所示),那么导入如何处理呢? 我们如何跟踪某些行是否包含不良数据,哪些导入会跳过?(导入会跳过不可导入的行) 这是带标题的示例CSV: Name,Class,Subject,ExamDate,Mark,Description Prabhat,4,Math,2/10/2013,25,Test data for prabhat. Murari,5,Science,2/11/2013,24,"Test data for his's test, where we can test 2nd ROW, Test." sanjay,4,Science,,25,Test Only. 和SQL语句导入: BULK INSERT SchoolsTemp FROM 'C:\CSVData\Schools.csv' WITH ( FIRSTROW = 2, FIELDTERMINATOR = ',', --CSV field delimiter ROWTERMINATOR = '\n', --Use to shift …
185 sql  sql-server  csv  bulkinsert  bulk 

8
mongodb:如果不存在则插入
每天,我都会收到一堆文件(更新)。我想要做的是插入每个尚不存在的项目。 我还想跟踪我第一次插入它们以及上次在更新中看到它们的情况。 我不想有重复的文件。 我不想删除以前已保存但不在我的更新中的文档。 每天有95%(估计)的记录未修改。 我正在使用Python驱动程序(pymongo)。 我目前正在做的是(伪代码): for each document in update: existing_document = collection.find_one(document) if not existing_document: document['insertion_date'] = now else: document = existing_document document['last_update_date'] = now my_collection.save(document) 我的问题是它非常慢(少于10万条记录需要40分钟,而我在更新中有数百万条记录)。我很确定有一些内置函数可以执行此操作,但是update()的文档是mmmhhh ....有点简洁....(http://www.mongodb.org/display/DOCS/Updating) 有人可以建议如何更快地做到吗?


12
通过PHP数组插入多行到MySQL
我正在使用插入命令通过PHP将大型数据集传递到MySQL表中,并且我想知道是否有可能通过查询而不是将每个值附加到一英里长的字符串的末尾一次插入大约1000行,然后执行它。我正在使用CodeIgniter框架,因此我也可以使用它的功能。

4
bcp / BULK INSERT与表值参数的性能
BULK INSERT由于架构已更改,我将不得不使用SQL Server的命令重写一些相当旧的代码,我想到也许我应该考虑改用TVP切换到存储过程,但是我想知道会有什么效果它可能会影响性能。 一些背景信息可能有助于解释为什么我问这个问题: 数据实际上是通过Web服务输入的。该Web服务将文本文件写入数据库服务器上的共享文件夹,该文件夹随后执行BULK INSERT。此过程最初是在SQL Server 2000上实现的,当时实际上除了INSERT在服务器上删除几百条语句外,别无选择,这实际上是原始过程,并且会造成性能灾难。 数据被批量插入到永久登台表中,然后合并到更大的表中(此后将从登台表中删除)。 要插入的数据量是“大”的,而不是“巨大的”-通常只有几百行,在极少数情况下可能是5-10k行。因此,我的直觉是,BULK INSERT作为一个未记录的操作不会有太大的不同(但我当然不确定,因此是问题)。 插入实际上是更大的流水线批处理过程的一部分,需要连续多次进行。因此性能是至关重要的。 我想将其替换BULK INSERT为TVP的原因是: 通过NetBIOS编写文本文件可能已经花费了一些时间,并且从体系结构的角度来看这是非常可怕的。 我认为可以(并且应该)取消登台表。造成这种情况的主要原因是,插入的数据需要在插入的同时用于其他两次更新,而尝试从大量生产表进行更新要比使用几乎为空的登台要昂贵得多表。对于TVP,参数基本上是临时表,我可以在主插入之前/之后使用它进行任何操作。 我几乎可以消除重复检查,清理代码以及与批量插入相关的所有开销。 如果服务器一次获得一些事务,则无需担心登台表或tempdb上的锁争用(我们尝试避免这种情况,但它确实发生了)。 显然,在将任何产品投入生产之前,我将对此进行概要分析,但是我认为在我度过所有时间之前先询问一下是一个好主意,看看是否有人为此发布使用TVP的严厉警告。 所以-对于任何对SQL Server 2008足够熟悉的人尝试过或至少对此进行过调查,那么结论是什么?对于插入(例如几百到几千行)的情况,TVP是否会切芥菜?与散装刀片相比,性能有显着差异吗? 更新:现在问号减少了92%! (又称:测试结果) 经过36阶段的部署过程之后,最终结果现已投入生产。两种解决方案都经过了广泛的测试: 提取共享文件夹代码并SqlBulkCopy直接使用该类; 使用TVP切换到存储过程。 以便读者可以了解到底经过了什么测试,以消除对这些数据的可靠性的任何疑问,这是对该导入过程实际作用的更详细说明: 从通常约20至50个数据点的时间数据序列开始(尽管有时可能会增加几百个)。 对其进行大量疯狂的处理,这些处理基本上独立于数据库。此过程是并行的,因此(1)中大约8-10个序列被同时处理。每个并行过程会生成3个附加序列。 取所有3个序列和原始序列,并将它们合并为一批。 将现在完成的所有8-10个处理任务中的批次合并为一个大的超级批次。 使用BULK INSERT策略(请参阅下一步)或TVP策略(跳至步骤8)导入它。 使用SqlBulkCopy该类将整个超级批处理转储到4个永久登台表中。 运行一个存储过程,该存储过程是(a)在两个表上执行一系列聚合步骤,包括几个JOIN条件,然后(b)MERGE在6个生产表上使用聚合和非聚合数据执行a 。(完成) 要么 生成4个DataTable对象,其中包含要合并的数据;其中3个包含CLR类型,但不幸的是ADO.NET TVP没有正确地支持它们,因此必须将它们作为字符串表示形式使用,这会严重影响性能。 将TVP馈送到存储过程,该过程基本上与(7)相同,但直接与接收到的表一起进行。(完成) 结果相当接近,但是TVP方法最终平均表现更好,即使数据超过1000行少量。 请注意,此导入过程连续运行了数千次,因此仅通过计算完成所有合并所花费的小时数(是,小时),就很容易获得平均时间。 最初,平均合并几乎要花8秒钟才能完成(在正常负载下)。消除NetBIOS的麻烦并切换为SqlBulkCopy将时间减少到几乎恰好7秒。切换到TVP可以将时间进一步减少到每批5.2秒。对于运行时间以小时为单位的过程,这将使吞吐量提高35% -一点也不差。与相比,也提高了约25%SqlBulkCopy。 实际上,我相当有信心,真正的进步远不止于此。在测试过程中,很明显,最终的合并不再是关键的路径。相反,进行所有数据处理的Web服务开始受到输入请求数量的限制。CPU和数据库I / O都没有真正达到极限,并且没有明显的锁定活动。在某些情况下,我们发现连续合并之间存在几秒钟的空闲间隔。使用时有一点缝隙,但要小得多(半秒左右)SqlBulkCopy。但是我想那将成为另一天的故事。 结论:表值参数确实比BULK INSERT在中型数据集上执行复杂的导入+转换过程的操作要好。 …

7
如何在MySQL表中插入许多行并返回新的ID?
通常,我可以在MySQL表中插入一行并last_insert_id取回。现在,尽管如此,我想将许多行批量插入表中并获取ID数组。有人知道我该怎么做吗? 有一些类似的问题,但并不完全相同。我不想将新ID插入任何临时表;我只想找回ID数组。 我可以从批量插入中检索lastInsertId吗? 带有last_insert_id()的MySQL多行插入选择语句
77 mysql  bulkinsert 

9
带有标识(自动增量)列的批量插入
我正在尝试从CSV文件向数据库中添加批量数据。 Employee表的列ID(PK)自动增加。 CREATE TABLE [dbo].[Employee]( [id] [int] IDENTITY(1,1) NOT NULL, [Name] [varchar](50) NULL, [Address] [varchar](50) NULL ) ON [PRIMARY] 我正在使用此查询: BULK INSERT Employee FROM 'path\tempFile.csv ' WITH (FIRSTROW = 2,KEEPIDENTITY,FIELDTERMINATOR = ',' , ROWTERMINATOR = '\n'); .CSV文件- Name,Address name1,addr test 1 name2,addr test 2 但它导致此错误消息: 第2行第1列(id)的批量加载数据转换错误(类型不匹配或指定代码页的字符无效)。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.