【发布时间】:2019-02-14 14:46:10
【问题描述】:
问题是,使用 ssis,我做了一个 ado 源到 ado 目标。这种方法每秒只写入超过 88 行,速度很慢。
using Oracle.ManagedDataAccess.Client;
using System;
using System.Data;
using System.Data.SqlClient;
namespace SQLconnection
{
internal static class Program
{
private static void Main(string[] args)
{
SqlConnection conn = new SqlConnection("Data Source=;Database=;Integrated Security=yes");
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM TABLE", conn);
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader.GetString(0) + ", " + reader.GetString(19));
}
conn.Close();
conn.Dispose();
Console.ReadLine();
OracleConnection con = new OracleConnection("User Id=;Password=;Data Source=;");
con.Open();
OracleCommand cmd2 = con.CreateCommand();
cmd2
.CommandText = "SELECT \'Hello World!\' FROM dual";
OracleDataReader reader2 = cmd2.ExecuteReader();
reader2.Read();
Console.WriteLine(reader2.GetString(0));
Console.WriteLine(con.ServiceName);
Console.WriteLine(con.ServerVersion);
Console.WriteLine(con.HostName);
con.Close();
Console.ReadLine();
}
}
}
有什么方法可以通过控制台应用程序建立连接并传递数据?我觉得这会比每秒 88 行快。
【问题讨论】:
-
这不是 SSIS 代码。那是普通的 ADO.NET。在 SSIS 中,您可以简单地将 SQL Server 源连接到 Oracle 目标并每秒获得数千行。 88/sec 表示源或目标有问题。使用原始 ADO.NET 无法解决该问题
-
好的,谢谢。我会继续寻找解决方案。
-
我会避免在您的代码示例中使用
select * from ...,因为您只使用了 2 列(0 和 19),所以只需选择您需要的内容,否则您会要求 Oracle 向您发送大量不必要的数据。
标签: c# sql-server oracle