鉴于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. 创建DAO模式的步骤

    1.建立数据库epet 2.创建实体类,和相对应的数据库是对应的 3.创建Dao的基类接口类BaseDao 4.创建Dao的实现类BaseDaoImpl 5.创建具体表的Dao类 6.创建具体表的Da ...

  2. 用php怎么改文件名

    php手册:bool rename ( string oldname, string newname [, resource context] )尝试把 oldname 重命名为 newname. 如 ...

  3. Windows程序设再读笔记02-Unicode

    1.ASCII,7位编码,共128个编码,1950年ansi提出. 2.变种的Ascii,0x40等10个代码保留各个国家单独使用,1967年由iso提出.旨在解决重音符号,英镑符号的问题. 3.扩展 ...

  4. java守护线程的理解

    package daemonThread; /*setDaemon(true)方法将线程设置为守护线程,线程的Daemon默认值为false * 只要当前JVM实例中存在任何一个非守护线程没有结束,守 ...

  5. EBS中配置OAF

    配置EBS的OAF作者 redqq 16:09 | 静态链接网址 | 最新回复 (0) | 引用 (0) | ERP学习 载jdev 9.03.5带Oracle Applications Extens ...

  6. redis集群讨论

    一.生产应用场景 二.存储架构演变 三.应用最佳实践 四.运维经验总结 第1.2节:介绍redis cluster在唯品会的生产应用场景,以及存储架构的演变.第3节:redis cluster的稳定性 ...

  7. Sort命令使用

    查看haproxy日志的某一时间段的关于某个url的访问IP降序排序:           注意:排序(sort)在去重(uniq)之后使用 p 指的是从包含某一个字符到某一字符的区间的所有行打印输出 ...

  8. WCF之Binding详解

    本文的出发点: 通过阅读本文,您能了解以下知识: WCF中的Binding是什么? Binding的组 成? Binding Element 的分类? Binding描述 了那些层面的信息? 选择正确 ...

  9. python 获取一个列表有多少连续列表

    python 获取一个列表有多少连续列表 例如 有列表 [1,2,3] 那么连续列表就是 [1,2],[2,3],[1,2,3] 程序实现如下: 运行结果:

  10. Delphi 获取临时数据集 ClientDataSet

    function GetcdsAccountsData: OleVariant; var ASQLQuery: TSQLQuery; Adsp: TProvider; begin ASQLQuery: ...