Tag: bulkinsert

从DataTable批量插入到SQLCE DataSource

这是一个使用SQL CE作为DataSource的C#WPF应用程序: 我有一个DataTable(显示为DataGrid)和一个SQL CE DataSource。 我使用DataAdapter,DataSet和DataTable从SQL CE填充我的DataTable。 然后将我的DataGrid绑定到DataTable。 我可以在我的DataTable中添加行(> 10,000)行,并且可以在将所有更改一起传播到我的Sql CE DataSource之前编辑数据。 我当前的方法是DROP TABLE,CREATE TABLE,并通过暴力重新插入行到SQLCE。 SQL CE没有批量插入,我不想使用第三个库或DLL。 表现很慢…… 我正在寻找或更快的“批量插入”方式,而无需逐个删除,创建和插入行。 我读了一些关于SqlCeResultSet的内容,但我找不到任何文档,并且想知道它与我正在尝试做的事情有什么关系。 [编辑] 在回答并检查之后: http://ruudvanderlinden.com/2010/10/13/bulk-insert-into-sql-ce-in-c/ 我试图使用该function,但似乎没有用。 以下是我的代码。 Footable是我的数据库表,我有两列 – “id”和“FooName”。 Hashtable idHash = new Hashtable(); Hashtable fooNameHash = new Hashtable(); foreach(DataRow row in dt.Rows) { idHash.Add(“id”,row[“id”]); fooNameHash.Add(“FooName”,row[“FooName”]); } List colHashList = new List(); colHashList.Add(idHash); colHashList.Add(fooNameHash); BulkInsertDatabase(colHashList, “FooTable”); […]

如何从文本文件中读取数百万行并快速插入表中

我已经通过插入200万行快速链接到SQL Server ,发现我可以通过使用批量插入来完成此操作。 所以我试图创建数据表(代码如下),但因为这是一个巨大的文件(超过300K行)我在我的代码中得到一个OutOfMemoryEexception : string line; DataTable data = new DataTable(); string[] columns = null; bool isInserted = false; using (TextReader tr = new StreamReader(_fileName, Encoding.Default)) { if (columns == null) { line = tr.ReadLine(); columns = line.Split(‘,’); } for (int iColCount = 0; iColCount < columns.Count(); iColCount++) { data.Columns.Add("Column" + iColCount, typeof(string)); } […]

如何使用C#批量插入MySQL

我以前使用SQLBulkCopy类将数据加载到MS SQL Server数据库中。 结果非常好,并且完全像我预期的那样工作。 现在,我正在尝试使用SSIS中的脚本任务,使用ODBC或ADO.NET连接将数据批量加载到MySQL(5.5.8)数据库中(推荐?)。 我的数据集中的列对应于MySQL表的列。 将数据集批量插入MySQL数据库的最佳方法是什么?

entity framework批量插入引发KeyNotFoundException错误

我使用的是AddRange() ,由于AddRange()方法速度慢,我需要使用BulkInsert 。 所以我通过这里添加了针对EF6的BulkInsert的NuGet包。 添加dll后我收到的第一件事就是这个警告: 发现同一依赖程序集的不同版本之间存在冲突。 请在项目文件中将“AutoGenerateBindingRedirects”属性设置为true。 我List了所有我的Contact实体,即需要添加的contactsToInsert(我的联系人在另一个表中也有一个外键)。 当我尝试运行以下代码时,我收到一个KeyNotFoundException ,声称“ 给定的密​​钥不在字典中 ”。 using (var db = new Entities(myConnectionString)) { db.BulkInsert(contactsToInsert); db.SaveChanges(); } NB。 我在BackgroundWorker运行BulkInsert。 这可能是导致问题的原因吗? 堆栈跟踪: at System.Collections.Generic.Dictionary`2.get_Item(TKey key) at EntityFramework.MappingAPI.Mappers.MapperBase.BindForeignKeys() in c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\Mappers\MapperBase.cs:line 603 at EntityFramework.MappingAPI.Mappings.DbMapping..ctor(DbContext context) in c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\Mappings\DbMapping.cs:line 101 at EntityFramework.MappingAPI.EfMap.Get(DbContext context) in c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\EfMap.cs:line 60 at EntityFramework.MappingAPI.Extensions.MappingApiExtensions.Db(DbContext ctx, Type type) in c:\dev\EntityFramework.MappingAPI\trunk\src\EntityFramework.MappingAPI\Extensions\MappingApiExtensions.cs:line 51 at […]

使用C#在SQL Server上的临时表中插入3万行的最快方法

我试图找出如何使用c#在SQL Server的临时表中提高插入性能。 有些人说我应该使用SQLBulkCopy但是我必须做错了,因为它似乎比简单地构建一个SQL插入字符串慢得多。 我使用SQLBulkCopy创建表的代码如下: public void MakeTable(string tableName, List ids, SqlConnection connection) { SqlCommand cmd = new SqlCommand(“CREATE TABLE ##” + tableName + ” (ID int)”, connection); cmd.ExecuteNonQuery(); DataTable localTempTable = new DataTable(tableName); DataColumn id = new DataColumn(); id.DataType = System.Type.GetType(“System.Int32”); id.ColumnName = “ID”; localTempTable.Columns.Add(id); foreach (var item in ids) { DataRow row = localTempTable.NewRow(); […]

将通用列表C#批量插入SQL Server

如何将c#中的通用列表批量插入SQL Server,而不是循环遍历列表并一次插入一个项目? 我现在有这个; private void AddSnapshotData() { var password = Cryptography.DecryptString(“vhx7Hv7hYD2bF9N4XhN5pkQm8MRfxi+kogALYqwqSuo=”); var figDb = “ZEUS”; var connString = String.Format( “Data Source=1xx.x.xx.xxx;Initial Catalog={0};;User ID=appuser;Password={1};MultipleActiveResultSets=True”, figDb, password); var myConnection = new SqlConnection(connString); myConnection.Open(); foreach (var holding in _dHoldList) { lbStatus.Text = “Adding information to SQL for client: ” + holding.ClientNo; _reports.AddZeusData(“tblAllBrooksHoldingsSnapshot”, “CliNo, SEDOL, ISIN, QtyHeld, DateOfSnapshot”, “‘” […]

SQLBulkCopy或批量插入

我有大约6500个文件,总和大约17 GB的数据,这是我第一次移动我称之为大量数据的东西。 数据位于网络驱动器上,但各个文件相对较小(最大7 MB)。 我正在用C#编写程序,如果我使用BULK INSERT而不是SQLBulkCopy,我想知道是否会注意到性能上的显着差异。 服务器上的表也有一个额外的列,所以如果我使用BULK INSERT,我将不得不使用格式文件,然后为每一行运行UPDATE。 我是新来的论坛,所以如果有更好的方式来问这个问题,请随意提及。

无状态NHibernate会话的插入很慢

我正在努力改进NHibernate Insert性能已经有几天了。 我在许多post(例如这篇文章)中读到无状态会话可以插入每秒1000~2000条记录….但是它可以插入1243条记录的最佳时间对我来说超过9秒: var sessionFactory = new NHibernateConfiguration().CreateSessionFactory(); using (IStatelessSession statelessSession = sessionFactory.OpenStatelessSession()) { statelessSession.SetBatchSize(adjustmentValues.Count); foreach (var adj in adjustmentValues) statelessSession.Insert(adj); } class级 : public partial class AdjustmentValue : PersistentObject, IFinancialValue { public virtual double Amount { get; set; } public virtual bool HasManualValue { get; set; } public virtual bool HasScaleValue { get; set; […]

如何使用EntityFramework.BulkInsert?

我正在尝试使用位于http://efbulkinsert.codeplex.com/的 EntityFramework.BulkInsert。 它是Entity Framework的扩展。 我安装了正确的NuGet包,并using EntityFramework.BulkInsert添加到我的class级顶部。 当我去做一个context.BulkInsert(entities) “BulkInsert”下面有一条红线,好像它不存在一样。 有人可以帮我正确使用这个扩展吗? 我之前没有使用过扩展方法。 你应该能够做到这一点: context.BulkInsert(entities);

如何将CSV文件批量插入SQLite C#

我见过类似的问题( 1,2 ),但没有一个讨论如何将CSV文件插入SQLite。 关于我唯一能想到的就是使用CSVDataAdapter并填充SQLiteDataSet ,然后使用SQLiteDataSet更新数据库中的表: 我发现的唯一的CSV文件DataAdapter实际上并不可用: CSVDataAdapter CSVda = new CSVDataAdapter(@”c:\MyFile.csv”); CSVda.HasHeaderRow = true; DataSet ds = new DataSet(); // <– Use an SQLiteDataSet instead CSVda.Fill(ds); 要写入CSV文件: CSVDataAdapter CSVda = new CSVDataAdapter(@”c:\MyFile.csv”); bool InclHeader = true; CSVda.Update(MyDataSet,”MyTable”,InclHeader); 我找到了上面的代码@ http://devintelligence.com/2005/02/dataadapter-for-csv-files/ CSVDataAdapter应该配备OpenNetCF的SDF ,但它似乎不再可用了。 有谁知道我可以在哪里获得CSVDataAdapter ? 也许有人知道更简单的事情:如何将CSV文件批量插入到SQLite中……非常感谢您的帮助!