如何将数据从旧服务器提取到SQL服务器?

时间:2009-02-20 20:33:23

标签: c# .net asp.net sql sql-server

我想编写一个代码,用于将数据从服务器传输到我的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 个答案:

答案 0 :(得分:6)

根据您使用的SQL Server版本,此处的标准解决方案是使用DTS(2000及更早版本)或SSIS(2005及更高版本)。如果需要,可以将其转换为可执行文件,直接从SQL Server安排,或手动运行。这两个工具都非常强大(尽管SSIS更加如此),有清除现有数据的方法,出现错误时回滚,必要时转换数据,写出异常等等。

答案 1 :(得分:2)

如果可能的话,我会尝试在SQL Server中完成所有操作。您可以为其他数据库服务器创建链接服务器。然后只需使用T-SQL复制数据 - 它看起来像......

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

如果您需要定期执行此操作或首先清除数据,则可以使用SQL代理执行此操作作为计划任务的一部分。

答案 2 :(得分:1)

如果您只需要导入一次数据,并且您有大量数据,为什么不使用“BULK INSERT”命令? Link

答案 3 :(得分:1)

T-SQl允许您从select查询中插入数据。它看起来像这样:

insert into Foo
select * from Bar;

只要字段类型对齐,这将有效 - 否则您必须按下Bar中的数据以适合Foo中的字段。

答案 4 :(得分:0)

当您需要执行此操作时,请查看数据库发布向导(仅限Google)并生成可执行所有操作的脚本。

相关问题