各位大侠,我用SQL2005数据库,用C#写个小程序,有两个数据库,A1,A2,其中A1有50张表,A2有210张表,A1的50张表包含在A2中,即A2中也有与A1相同结构的50张表。现在A1的50张表中有上百万条数据,A2中相对的50张表用truncate table清空,然后将A1的50张表的数据逐表插入到A2的50张表中,运行一段时间后,提示“运行超时”,A1中仅有一张表的数据插入到A2的相对表中。有人说分段插入,可是还是不行,有一张表数据就达90多万条,单独插入时还是提示“运行超时”。问下高手,这样情况如何解决呢?
但总归不是办法
另外如果你是数据库直接可以直接访问的话,通过链接服务器来操作会更好,直接在数据库里面执行了。
public void copydata1( string tablename1)
{
string cString = "user id=sa;password=123;initial catalog=master;data source=(local);database=A1;connect Timeout=3600;";
string c_String = "user id=sa;password=123;initial catalog=master;data source=(local);database=A2;connect Timeout=3600;";
using (SqlConnection conn = new SqlConnection(cString))
{
conn.Open();
SqlCommand comm = new SqlCommand("SELECT * FROM A.dbo."+tablename1, conn);
SqlDataReader reader = comm.ExecuteReader();
using (SqlConnection conn2 = new SqlConnection(c_String))
{
conn2.Open();
using (SqlBulkCopy bcp = new SqlBulkCopy(conn2))
{
bcp.DestinationTableName = "A2.dbo."+tablename1;
bcp.BulkCopyTimeout = 5000;
try
{
bcp.WriteToServer(reader);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
reader.Close();
}
}
}
}
}
加入参数执行少量数据可以,大量数据,超过50万左右还是提示超时。各位高手,急待解决呀?
非要用代码来实现
toll\bin 下的dtswiz.exe直接搞定
我测过800m的文本,存储过程+索引 比纯sql代码效率快很多
希望你顺利哈
1、是否需要实时转换(需求有这个必要吗?)
2、能否转换需求为其它方式再有就是如果非要这么做建议让SQL自己去做,也就是说C#去调用一个存储过程,然后让存储过程去做
再有就是SQL制定任务,让SQL定时去处理数据,不要自己写代码处理
我用了BCP,在CMD下调用,可用,但在WINFORM下调用时,无反应,上网上也找了很多解决办法,至今未果。哎!!!!
参考下面的
http://hi.baidu.com/hao_2468/item/f3203cd1d28349392b35c732