`
zhouxin464585932
  • 浏览: 80475 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

关于数据的导入问题

阅读更多

class Program
{
static volatile bool result;
static void Main(string[] args)
{
DataSet ds
= ExportDataSet();

//使用2个线程模拟并发操作
Thread t = new Thread(delegate() { result = Insert(ds); Console.WriteLine(result ? "导入成功" : "导入失败"); });
t.Start();
Thread t1
= new Thread(delegate() { result = Insert(ds); Console.WriteLine(result ? "导入成功" : "导入失败"); });
t1.Start();
Console.ReadLine();
}

/// <summary>
/// 获取数据DataSet
/// </summary>
/// <returns></returns>

static private DataSet ExportDataSet()
{

//局域网的某服务器模拟数据库远程连接
SqlConnection RemoteConn = new SqlConnection("Data Source=192.168.0.183;Initial Catalog=Northwind;User ID=sa;Password=sa");



using (

/*目标表与源表结构并不相同,目标表只包含OrderID、CustomerID、EmployeeID、ShipCountry这四个字段。注意这里字段是区分大小写的,不然SqlBulkCopy的WriteToServer方法会报运行时异常:“给定的 ColumnMapping 与源或目标中的任意列均不匹配”的处理方法。这个地方浪费了我1个小时才发现*/
SqlDataAdapter oda
= new SqlDataAdapter("SELECT [OrderID], [CustomerID], [EmployeeID], [ShipCountry] FROM [Northwind].[dbo].[Orders]", RemoteConn))

//如果目标表与源表结构完全一致,则用下面语句即可,msdn的例子也只是这样

//SqlDataAdapter oda = new SqlDataAdapter("SELECT * FROM [Ednoland].[dbo].[Score]", RemoteConn))
{
DataSet ds
= new DataSet();

oda.Fill(ds,
"Orders");//给定表名

return ds;

}

}

/// <summary>
/// 将DataSet导入远程数据库(未来放在WebService中)
/// </summary>
/// <param name="ds"></param>
/// <returns></returns>
public static bool Insert(DataSet ds)
{


using (SqlConnection sqlconn = new SqlConnection("Data Source=.;Initial Catalog=Northwind;User ID=sa;Password=sa"))
{
sqlconn.Open();
SqlTransaction sqlbulkTransaction
= sqlconn.BeginTransaction(IsolationLevel.ReadCommitted);



using (SqlBulkCopy sbc = new SqlBulkCopy(sqlconn, SqlBulkCopyOptions.KeepIdentity, sqlbulkTransaction))
{
sbc.BatchSize
= 20000;//20000行每连接
sbc.BulkCopyTimeout = 50;//50秒超时
if (ds.Tables == null || ds.Tables.Count == 0)
return false;

if (ds.Tables.Count == 1)
{


return BulkInsert(sbc, ds.Tables[0], sqlbulkTransaction); ;

}
else
{
bool res = true;
foreach (DataTable dt in ds.Tables)
{

res
= BulkInsert(sbc, dt, sqlbulkTransaction);

}
return res;
}

}
}

}

private static bool BulkInsert(SqlBulkCopy sbc, DataTable dt, SqlTransaction sqlbulkTransaction)
{

bool res = true;
try
{

//将DataTable表名作为待导入库中的目标表名
sbc.DestinationTableName = dt.TableName;



//将数据集合和目标服务器库表中的字段对应
for (int i = 0; i < dt.Columns.Count; i++)
{
//sbc.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);
sbc.ColumnMappings.Add(i,i);//可以避免字段大小写不一致造成无法映射的问题
}

sbc.WriteToServer(dt);

//提交事务
sqlbulkTransaction.Commit();
res
= true;
}
catch (SqlException ex)
{
res
= false;
sqlbulkTransaction.Rollback();
}

return res;
}
}

分享到:
评论

相关推荐

    数据导入导出 (java)

    在IT行业中,数据导入导出是一项基础且重要的任务,特别是在Java开发中。本文将深入探讨如何使用Java进行数据的导入和导出,包括Excel、XML和TXT等常见格式的处理。 首先,我们要理解数据导入导出的核心目的:将...

    Oralce数据导入导出及常见问题

    ### Oracle 数据导入导出及常见问题 Oracle 数据库作为企业级数据库管理系统的首选之一,在日常运维工作中,数据的导入导出是一项非常重要的操作。本文将详细介绍如何在 Oracle 中进行数据的导入导出,并针对常见的...

    管家婆A8数据导入工具

    【管家婆A8数据导入工具】是一款专门针对管家婆A8企业管理软件的数据处理工具,它主要功能是帮助用户高效、便捷地将大量的基础资料数据导入到A8系统中,节省了手动输入的时间,提高了工作效率。在企业信息化管理中,...

    数据导入导出Excel

    在IT行业中,数据导入导出Excel是一项常见的任务,特别是在数据分析、报表生成以及系统间的数据交换等领域。本项目可能提供了一种实用的方法来处理这类需求。下面将详细解释相关的知识点。 首先,我们要理解什么是...

    帆软填报报表数据导入案例

    帆软填报报表数据导入案例 在本案例中,我们将学习如何使用帆软填报报表将数据从 Excel 导入到报表中。这个过程可以分为六个主要步骤:新建普通报表、添加字段名称、添加控件和设置竖向拓展、添加数据导入和提交...

    matlab快速数据导入算法,别傻乎乎的慢慢点数据导入了。

    matlab快速数据导入算法,别傻乎乎的慢慢点数据导入了。

    数据导入导出工具

    数据导入的关键在于确保数据的准确性和完整性,避免因为格式不兼容或数据错误导致的问题。 接着,我们来看看数据导出。数据导出则是将数据从一个系统或数据库中提取出来,生成文件以供其他应用或用户使用。这可能是...

    i2的数据导入

    在导入过程中,用户可以通过导入器的监测功能来查看数据导入的状态和进度,及时发现并解决可能出现的问题。 #### 九、工作实例 手册还提供了一些实际的工作案例,帮助用户更好地理解和应用Analyst’s Notebook导入...

    oracle导入表导入数据实例

    在Oracle数据库管理中,数据导入是一项常见的操作,用于将外部数据加载到数据库中。本实例主要探讨如何使用Oracle的数据导入工具——SQL*Loader,通过控制文件(`.ctl`)来执行这一过程。以下是对"oracle导入表导入...

    access数据导入工具

    Access数据导入工具是一款专为Microsoft Access数据库设计的实用软件,旨在简化用户的数据导入与导出过程。Access数据库是Microsoft Office套件的一部分,主要用于管理和存储结构化的数据,如表、查询、窗体、报表等...

    oracle Imp导入数据

    OracleIMP 命令是 Oracle 数据库中的一种数据导入工具,但是在使用 IMP 命令导入数据时,经常会碰到乱码问题。这篇文章将从根本上解决了导入数据乱码的根源及解决办法。 IMP 命令是 Oracle 数据库中的一种数据导入...

    如何将测量数据导入CAD中.pdf

    "如何将测量数据导入CAD中" CAD(Computer-Aided Design,计算机辅助设计)是一种基于计算机的设计工具,广泛应用于建筑、机械、电子、航空航天等多个领域。测量数据是指通过各种测量设备或仪器获取的数据,例如GPS...

    管家婆366++数据导入模版

    "管家婆366++数据导入模版"是一款专为使用管家婆366++财务管理软件的用户设计的工具,旨在简化数据录入过程,提高工作效率。这个模版允许用户批量导入部门、物品等数据,避免了传统方式下逐条手动输入的繁琐步骤,...

    phpcms数据导入导出模块

    【phpcms数据导入导出模块】是针对phpcms V9内容管理系统的一个功能扩展,主要用于方便网站管理员进行数据的批量处理。这个模块的核心在于提供了一种高效、灵活的方式来管理和迁移数据,尤其是在大型网站或者需要...

    sqoop导入数据到hive中,数据不一致

    当使用Sqoop将数据导入Hive时,有时可能会遇到数据不一致的问题,这可能是由于多种原因引起的。本文将深入探讨这个问题,并提供可能的解决方案。 Sqoop是一个用于在关系数据库和Hadoop之间传输数据的工具,它可以...

    管家婆2008数据导入工具

    【管家婆2008数据导入工具】是一款专为管家婆2008财务管理软件设计的数据处理工具,其主要功能是帮助用户将原有数据高效、安全地迁移到新的数据库环境中,或者在不同的管家婆2008系统之间进行数据同步。这款工具经过...

    C#将数据导入excel和Excel数据导入数据库

    本主题聚焦于如何利用C#处理Excel文件,并将其数据导入到SQL Server数据库中。这一过程通常涉及到两个主要步骤:读取Excel数据和与数据库进行交互。 首先,我们来看C#读取Excel数据的部分。在.NET框架中,可以使用...

    DB2数据导入导出

    DB2 数据导入导出详解 DB2 数据导入导出是数据库管理系统中的一项重要功能,它允许用户将数据从一个数据库迁移到另一个数据库中,或者将数据备份到外部存储设备中。下面是一个详细的 DB2 数据导入导出的教程。 DB2...

    关于数据导入导出

    数据导入导出是IT行业中一个基础且至关重要的环节,它涉及到数据管理、数据分析以及数据库操作等多个领域。在日常工作中,我们需要频繁地从不同来源获取数据,或将处理后的数据传输到其他系统,这就需要掌握有效的...

    AMESim表格数据导入方法--经常用到.rar_Amesim存数据_Amesim怎么查表_amesim中的数表_amesim表

    AMESim是一款广泛应用于系统仿真领域的软件,其强大的功能使得用户能够对各种工程系统进行建模、分析和优化。...记住,实践是检验真理的唯一标准,多动手操作几次,你就会对AMESim的数据导入和数表管理更加熟练。

Global site tag (gtag.js) - Google Analytics