C # 20000 записей, выбранных из оракула, необходимо вставить в SQL2005 - PullRequest
1 голос
/ 14 декабря 2010

У меня есть консольное приложение на языке c #, которое извлекает 20 полей из базы данных Oracle с помощью приведенного ниже кода, и мне нужен эффективный способ вставить их в SQL 2005.

Я не хочу вставлять каждый из 20000 в цикл while, очевидно. я думал изменить код, чтобы использовать набор данных для кэширования всех записей, а затем выполнить массовую вставку ...

мысли?

Псевдокод был бы хорош, так как я новичок в Oracle.

это мой код, в котором я тестировал соединение с оракулом и проверял, могу ли я просмотреть данные ... теперь я могу просмотреть их, хочу вывести их в sql2005 ... что мне здесь делать

static void getData()
{
    string connectionString = GetConnectionString();
    using (OracleConnection connection = new OracleConnection())
    {
        connection.ConnectionString = connectionString;
        connection.Open();

        OracleCommand command = connection.CreateCommand();
        string sql = "SELECT * FROM BUG";
        command.CommandText = sql;

        OracleDataReader reader = command.ExecuteReader();
        while (reader.Read())
        {
            //string myField = (string)reader["Project"];
            string myField = reader[0].ToString();
            Console.WriteLine(myField);
        }
    }

}

Ответы [ 3 ]

1 голос
/ 14 декабря 2010

Вы можете создать файл CSV, а затем использовать BULK INSERT, чтобы вставить файл в SQL Server. Посмотрите здесь для примера.

0 голосов
/ 15 декабря 2010

На самом деле вы можете сделать 100-1000 вставок на кв. Просто создайте несколько вставок, затем отправьте. Прегенерируйте следующую партию SELECT, пока выполняются первые.

0 голосов
/ 15 декабря 2010

«Массовая» вставка с кэшированным набором данных будет работать точно так же, как цикл while, который вы не хотите писать!Проблема в том, что вы потеряете контроль над процессом, если попытаетесь использовать «массовую» вставку класса набора данных.В конце концов, это посторонняя работа.

Возможно, лучшим решением будет использование DataWriter, чтобы у вас был полный контроль и никаких затрат на набор данных.

...