鉴于C#要插5万条记录到Access很慢,在网上找了好久的资料,终于找到了比较有用的信息(转载自Bach)谢谢!

  总结如下:

  1、导出TXT:  select * into [data.txt] in "E:/DATA" "Text;" from TableName

(存放的TXT名)(存放路径)                    (表名)

注意:这种方式导出的TXT格式与access中的手动导出的格式不一样,会生成一个schema.ini,相当于设置视图里面的数据

2、导入到新表:SELECT * INTO TableName FR0M [data.txt] IN "E:/data" "Text;"

注意:导入到新表需要schema.ini,且TXT格式必须是用1中的语句导出的格式一样

  3、表已经存在, 追加导入:INSERT INTO TableName select * from [data.txt] in "E:/data" "Text;"

      注意:TXT格式必须是用1中的语句导出的格式一样,可以没有schema.ini

通过以上方法对access的大量数据的操作,速度快,且不卡。

    

  以下是我CAD二次开发时用到上述技术的代码,懒得整理,如有人看不懂,留言我整理一下

  DataTable写入txt

 
private void DatatableToTxt(System.Data.DataTable dt, string txtPath)
{
StringBuilder strB = new StringBuilder(); for(int i=;i<dt.Columns.Count;i++)
{
if(i!=dt.Columns.Count-)
strB.AppendFormat("\"{0}\",",dt.Columns[i].ColumnName);
else
strB.AppendFormat("\"{0}\"", dt.Columns[i].ColumnName);
}
strB.Append("\r\n"); for (int i = ; i < dt.Rows.Count; i++)
{
for (int j = ; j < dt.Columns.Count; j++)
{
if (dt.Columns[j].DataType == typeof(string) && !string.IsNullOrEmpty(dt.Rows[i][j].ToString()))
{
if (j != dt.Columns.Count - )
strB.AppendFormat("\"{0}\",", dt.Rows[i][j].ToString());
else
strB.AppendFormat("\"{0}\"", dt.Rows[i][j].ToString());
}
else
{
if (j != dt.Columns.Count - )
strB.AppendFormat("{0},", dt.Rows[i][j].ToString());
else
strB.AppendFormat("{0}", dt.Rows[i][j].ToString());
}
}
if(i!=dt.Rows.Count-)
strB.Append("\r\n");
}
Write(txtPath, strB.ToString());
}

  新建TXT

        public void Write(string path,string text)
{
if (File.Exists(path))
File.Delete(path);
FileStream fs = new FileStream(path, FileMode.Create);
StreamWriter sw = new StreamWriter(fs,System.Text.Encoding.Default);
//开始写入
sw.Write(text);
//清空缓冲区
sw.Flush();
//关闭流
sw.Close();
fs.Close();
}

  调用

  DatatableToTxt(dt_new, @"D:\Data.txt");
string strinsert = "INSERT INTO GX_PS_WSP select * from [Data.txt] in \"D:/\" \"Text;\" ";
ExecuteSql(strinsert, constr);

Access批量操作的更多相关文章

  1. .net 调用Oracle.Data.Access 组件提供的用于批量操作的方法—获取数据库表结构方法和跟参数赋值方法

    1./// <summary> /// 获取当前目标表结构 /// </summary> /// <param name="tableName"> ...

  2. .net 调用Oracle.Data.Access 组件提供的用于批量操作的方法

    1.添加引用 using Oracle.DataAccess.Client; using System.Configuration; 2.代码 增加方法 //DestinationTableName ...

  3. Excel(Access)文件共享锁定数溢出(Error 3052)的解决方法

    Excel或Access均可能会提示:文件共享锁定数溢出(Error 3052),主要版本为office 2003,在其他版本上未遇到.错误提示如下: Microsoft JET Database E ...

  4. 【基于WinForm+Access局域网共享数据库的项目总结】之篇一:WinForm开发总体概述与技术实现

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  5. windows 部署 git 服务器报 Please make sure you have the correct access rights and the repository exists.错误

    这两天在阿里云上弄windows 服务器,顺便部署了一个git服务.根据网上教程一步步操作下来,最后在 remote远程仓库的时候提示 fatal: 'yourpath/test.git' does ...

  6. 【.net 深呼吸】连接Access数据库应注意的几点

    本地数据库可以有Y种选择,比如Sqlite.SQL Server Express.SQL Local DB.SQL Server CE.Access等,本文老周选用比较著名的Access本地数据库,在 ...

  7. ASP.NET OAuth:解决refresh token无法刷新access token的问题

    最近同事用iOS App调用Open API时遇到一个问题:在access token过期后,用refresh token刷新access token时,服务器响应"invalid_gran ...

  8. ASP.NET OAuth:access token的加密解密,client secret与refresh token的生成

    在 ASP.NET OWIN OAuth(Microsoft.Owin.Security.OAuth)中,access token 的默认加密方法是: 1) System.Security.Crypt ...

  9. Web API与OAuth:既生access token,何生refresh token

    在前一篇博文中,我们基于 ASP.NET Web API 与 OWIN OAuth 以 Resource Owner Password Credentials Grant 的授权方式( grant_t ...

随机推荐

  1. For Your Dream

    队名:Braveheart 队员介绍: 队长:李洋洋 队员:姚欢,杨仁波,张波,乔闯 项目名称:数据沈航 总体任务: 收集整理学校的数据,为每个想要了解沈航的人展现一份我们收集来的信息 项目分组: ( ...

  2. js一个抽奖的例子

    朋友公司开年会,帮忙写了个抽奖的demo,源码如下,github中有程序: html: <header> lottery demo </header> <div clas ...

  3. Webservice接口

    快递查询接口 http://webservice.36wu.com/ExpressService.asmxip查询接口 http://webservice.36wu.com/ipService.asm ...

  4. Programming Entity Framework 翻译

    刚开始接触.net,c#语法应该说还没掌握好.学习实践的旅程就从linq和EF开始吧.感觉相比之前的开发方式,linq和EF方便好多. linq入门用了好久,因为c#不行,补习了2.0的泛型,3.0和 ...

  5. A way to connect to network through WIFI on Centos 7

    I bought a DELL laptop,but can not connect to network through wifi.There's lots of methods on the In ...

  6. CVPR 2007 Learning to detect a salient object

    Dataset: MSRA A&B are introduced in this paper. A conditional Random Field based method was prop ...

  7. UIViewController中addChildViewController的作用

    当在一个ViewController中添加一个子ViewController时,UI部分可以直接通过addSubView的方法添加,例如: 在一个ViewControllerA中添加ViewContr ...

  8. hadoop-2.2.0 的编译安装及HA配置

    一 准备工作 准备工作中要求有 1.centOs 6.4,添加hadoop用户,配置集群内的/etc/hosts文件. 2.安装hadoop用户的ssh,并打通集群内所有机器,(ha执行fencing ...

  9. Android真机访问PC端服务器

    若电脑联网:     1.开启一个无线网(以猎豹免费wifi为例)     2.手机连接上这个无线网(这样手机和电脑就在一个局域网内了)     3.此时查看手机的ip地址(我的是192.168.19 ...

  10. PHP面向对象_重载新的方法(parent::)

    在学习PHP 这种语言中你会发现, PHP中的方法是不能重载的, 所谓的方法重载就是定义相同的方法名,通过“参数的个数“不同或“参数的类型“不 同,来访问我们的相同方法名的不同方法.但是因为PHP是弱 ...