Как вытащить данные со старого сервера на сервер SQL? - PullRequest
0 голосов
/ 20 февраля 2009

Я хочу написать код, который передает данные с сервера на мой SQL Server. Прежде чем вставить данные, я хочу удалить текущие данные. Затем поместите данные от одного к другому. Как я это сделал. Это фрагменты кода, который у меня есть.

string SQL = ConfigurationManager.ConnectionStrings["SQLServer"].ToString();
string OLD = ConfigurationManager.ConnectionStrings["Server"].ToString();

SqlConnection SQLconn = new SqlConnection(SQL);
string SQLstatement = "DELETE * FROM Data";
SqlCommand SQLcomm = new SqlCommand(SQLstatement, SQLconn);
SQLconn.Open();

OdbcConnection conn = new OdbcConnection(OLD);
string statement = "SELECT * FROM BILL.TRANSACTIONS ";
statement += "WHERE (TRANSACTION='NEW') ";            
OdbcCommand comm = new OdbcCommand(statement, conn);
comm.CommandTimeout = 0;
conn.Open();


SqlDataReader myDataReader = SQLcomm.ExecuteReader();
while (myDataReader.Read())
{
    //...            
}
SQLconn.Close();
SQLconn.Dispose();

Ответы [ 5 ]

6 голосов
/ 21 февраля 2009

В зависимости от того, какую версию SQL Server вы используете, стандартным решением здесь является использование DTS (2000 и более ранних версий) или SSIS (2005 и более поздних версий). Вы можете превратить его в исполняемый файл, если вам нужно, запланировать его прямо из SQL Server или запустить вручную. Оба инструмента достаточно надежны (хотя SSIS намного более) с методами очистки существующих данных, отката в случае ошибок, преобразования данных в случае необходимости, записи исключений и т. Д.

2 голосов
/ 21 февраля 2009

Если это вообще возможно, я бы попытался сделать все это в SQL Server. Вы можете создать связанный сервер с вашим другим сервером базы данных. Затем просто используйте T-SQL для копирования данных - это будет выглядеть примерно так ...

INSERT INTO new_server_table (field1, field2)
SELECT x, y
FROM mylinkedserver.myolddatabase.myoldtable 

Если вам необходимо делать это регулярно или сначала очистить данные, вы можете сделать это как часть запланированной задачи с помощью агента SQL.

1 голос
/ 20 февраля 2009

T-SQl позволяет вставлять данные из запроса select. Это будет выглядеть примерно так:

insert into Foo
select * from Bar;

До тех пор, пока типы полей совпадают, это будет работать - в противном случае вам придется обрабатывать данные из Bar, чтобы соответствовать полям из Foo.

1 голос
/ 20 февраля 2009

Если вам нужно импортировать данные только один раз, и у вас много данных, почему бы не использовать команду "BULK INSERT"? Ссылка

0 голосов
/ 21 февраля 2009

Если вам нужно сделать это один раз, взгляните на мастера публикации баз данных (просто Google) и сгенерируйте скрипт, который сделает все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...