You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET中如何读取项目根目录外的MS Access数据库并迁移至SQL Server

读取外部MS Access数据库并迁移至SQL Server的实现方案

一、前置准备

  • 安装驱动:确保本地安装了Microsoft Access Database Engine 2016 Redistributable(用于读取Access文件),以及SQL Server官方连接库(如Microsoft.Data.SqlClient,可通过NuGet安装)
  • 权限验证:运行程序的账号需拥有目标Access目录(C:\Users\User\Desktop\databases_directory)的读取权限,同时具备SQL Server项目数据库的写入权限

二、读取Access数据库数据

以ASP.NET(C#)为例,直接通过绝对路径构建连接字符串读取数据:

// Access连接字符串,替换为你的数据库文件名
string accessConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\User\Desktop\databases_directory\YourDB.accdb;Persist Security Info=False;";

DataTable accessData = new DataTable();
using (OleDbConnection conn = new OleDbConnection(accessConnStr))
{
    conn.Open();
    // 替换为你要迁移的表名或自定义查询
    string query = "SELECT * FROM TargetAccessTable";
    using (OleDbDataAdapter adapter = new OleDbDataAdapter(query, conn))
    {
        adapter.Fill(accessData);
    }
}

三、批量迁移至SQL Server

使用SqlBulkCopy实现高效批量插入,适配项目SQL Server数据库:

// SQL Server连接字符串,替换为你的项目数据库信息
string sqlConnStr = @"Server=.\SQLEXPRESS;Database=MyAspProjectDB;Trusted_Connection=True;";

using (SqlConnection sqlConn = new SqlConnection(sqlConnStr))
{
    sqlConn.Open();
    using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn))
    {
        // 指定SQL Server目标表名
        bulkCopy.DestinationTableName = "TargetSqlTable";
        
        // 字段映射:如果Access与SQL Server字段名不一致,需手动配置
        bulkCopy.ColumnMappings.Add("AccessField1", "SqlField1");
        bulkCopy.ColumnMappings.Add("AccessField2", "SqlField2");
        
        // 执行批量写入
        bulkCopy.WriteToServer(accessData);
    }
}

四、关键注意事项

  • 字段类型兼容:提前对齐Access与SQL Server的字段类型,例如Access的Text对应SQL Server的NVARCHAR,Date/Time对应DATETIME2
  • 约束校验:确保SQL Server目标表的主键、非空约束等与Access数据匹配,避免插入失败
  • 大数据量处理:若数据量超过10万条,建议分批次读取和插入,避免内存占用过高
  • 事务保障:如需保证数据一致性,可添加事务包裹操作,失败时回滚所有变更

内容的提问来源于stack exchange,提问作者user20547818

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:31:24