首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用C#将表数据从oracle复制到SQL Server?

使用C#将表数据从Oracle复制到SQL Server,可以通过以下几个步骤实现:

  1. 安装所需的数据库驱动程序和连接库:
  • Oracle Data Provider for .NET (ODP.NET):用于连接Oracle数据库。
  • System.Data.SqlClient:用于连接SQL Server数据库。
  1. 创建连接字符串:
  • Oracle:Data Source=数据源名称;User Id=用户名;Password=密码;
  • SQL Server:Data Source=服务器名称;Initial Catalog=数据库名称;User Id=用户名;Password=密码;
  1. 使用ADO.NET执行数据库操作:
  • 创建一个OracleCommand对象,用于执行Oracle数据库的查询操作。
  • 创建一个SqlCommand对象,用于执行SQL Server数据库的插入操作。
  • 使用SqlDataReader对象读取Oracle数据库的数据,并使用SqlBulkCopy对象将数据批量插入到SQL Server数据库中。

以下是一个示例代码:

代码语言:csharp
复制
using System;
using System.Data;
using Oracle.DataAccess.Client;
using System.Data.SqlClient;
using System.Data.Common;

namespace OracleToSQLServer
{
    class Program
    {
        static void Main(string[] args)
        {
            string oracleConnectionString = "Data Source=数据源名称;User Id=用户名;Password=密码;";
            string sqlConnectionString = "Data Source=服务器名称;Initial Catalog=数据库名称;User Id=用户名;Password=密码;";

            string oracleSelectCommand = "SELECT * FROM oracle_table";
            string sqlInsertCommand = "INSERT INTO sql_table (column1, column2, column3) VALUES (@column1, @column2, @column3)";

            using (OracleConnection oracleConnection = new OracleConnection(oracleConnectionString))
            {
                oracleConnection.Open();

                using (SqlConnection sqlConnection = new SqlConnection(sqlConnectionString))
                {
                    sqlConnection.Open();

                    using (SqlCommand sqlCommand = new SqlCommand(sqlInsertCommand, sqlConnection))
                    {
                        sqlCommand.Parameters.Add("@column1", SqlDbType.VarChar, 50);
                        sqlCommand.Parameters.Add("@column2", SqlDbType.VarChar, 50);
                        sqlCommand.Parameters.Add("@column3", SqlDbType.VarChar, 50);

                        using (OracleCommand oracleCommand = new OracleCommand(oracleSelectCommand, oracleConnection))
                        {
                            using (OracleDataReader oracleDataReader = oracleCommand.ExecuteReader())
                            {
                                using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(sqlConnection))
                                {
                                    sqlBulkCopy.DestinationTableName = "sql_table";
                                    sqlBulkCopy.BatchSize = 1000;

                                    while (oracleDataReader.Read())
                                    {
                                        sqlCommand.Parameters["@column1"].Value = oracleDataReader["column1"];
                                        sqlCommand.Parameters["@column2"].Value = oracleDataReader["column2"];
                                        sqlCommand.Parameters["@column3"].Value = oracleDataReader["column3"];

                                        sqlBulkCopy.WriteToServer(oracleDataReader);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

注意:以上代码仅供参考,实际操作时需要根据实际情况进行修改。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券