如何通过编码将数据从 MS Access 导入 Sql Server [关闭]

Posted

技术标签:

【中文标题】如何通过编码将数据从 MS Access 导入 Sql Server [关闭]【英文标题】:How to import data from MS Access to Sql Server by coding [closed] 【发布时间】:2017-12-01 11:03:42 【问题描述】:

我需要通过代码将Access数据库导入Sql Server。我多年来用 C# 制作的软件已集成到 Access 数据库中。从现在开始,我们正在迁移到 Sql Server,目的是升级到下一个版本,系统将仅适用于 Sql Server。我想首先创建一个具有相同名称的表和列的Sql数据库,软件读取Access表并将数据保存在Sql数据库中。有没有其他更实用的方式通过编码来做到这一点?

我一直在搜索,发现只有工具准备好了,但没有通过编码。

【问题讨论】:

如果它是一次性任务,为什么要在代码中执行此操作? SSMA/SQL Server 迁移助手可以做到这一点,并为您提供一个良好的起点。 为什么在这种情况下我必须逐个访问每个用户的计算机并安装 SqlServer 才能进行迁移。其目的是通过该软件,在Visual Studio创建的表单中,在为新版本更新软件时,用户自己可以通过单击Ok按钮来迁移到新数据库。 【参考方案1】:

好的,假设您的访问数据库表有 3 列,第一列是整数类型,第二列是字符串(varchar),第三列是 DateTime(日期)。

所以这是您将数据从 Access 传递到 Sql Server 时必须执行的代码:

DataTable table = new DataTable();
// get data from access
using(OleDbConnection conn = new OleDbConnection("connString1"))

     using(OleDbDataAdapter da = new OleDbDataAdapter(@"SELECT * FROM MyTable", conn))
           da.Fill(table);


//insert data into Sql server:
using(SqlConnection conn = new SqlConnection("connString2"))

     using(SqlCommand cmd = new SqlCommand())
     
            cmd.CommandText = @"INSERT INTO MyTable VALUES (@p1, @p2, @p3)";
             cmd.Connection = conn;
             cmd.Parameters.Add("@p1", SqlDbType.Int);  
             cmd.Parameters.Add("@p2", SqlDbType.CarChar, 50);
             cmd.Parameters.Add("@p3", SqlDbType.DateTime);
             conn.Open();

             for(int i = 0; i < table.Rows.Count; i++)
             
                    cmd.Parameters["@p1"].Value = Convert.ToInt32(table.Rows[i][0]);
                    cmd.Parameters["@p2"].Value = table.Rows[i][1].ToString();
                    cmd.Parameters["@p3"].Value = Convert.ToDateTime(table.Rows[i][2]);
                    try
                    
                          cmd.ExecuteNonQuery();
                    
                    catch (Exception ex)
                    
                           MessageBox.Show(ex.Message);
                           break;
                    
             
     

【讨论】:

这正是我想做的。那么这是否意味着没有更简单的方法可以做到这一点? 这是通过代码实现的最简单方法。 @vijayvikcs Tkx!

以上是关于如何通过编码将数据从 MS Access 导入 Sql Server [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用sql语句和vba将数据从MS-Access导入excel power查询?

从 MS Access 导入数据

将特定数据从 csv 文件导入 MS Access

使用VB将数据从Excel导入Ms Access

将 MS Access 数据迁移到 MySQL:字符编码问题

自动将新数据从 MS Access 数据库导入 SQL Server