C#复制数据库,将数据库数据转到另一个数据库

本文章以一个表为例,要转多个表则可将DataSet关联多个表,下面给出完整代码,包括引用以及main函数与复制函数。

要说明的是,必须先用Sql语句复制表结构,才能顺利的使用以下代码复制数据。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Data.Common;

namespace CopyData
{
    class Program
    {
        static void Main(string[] args)
        {
            //要复制的表名
            string table = "V_Position";

            //构造连接字符串
            SqlConnectionStringBuilder builder1 = new SqlConnectionStringBuilder();
            builder1.DataSource = ".\\CANFLY";      //实例名称为CANFLY
            builder1.InitialCatalog = "desdata";    //目标数据库
            builder1.IntegratedSecurity = true;     //使用Windows身份验证

            SqlConnectionStringBuilder builder2 = new SqlConnectionStringBuilder();
            builder2.DataSource = ".\\CANFLY";
            builder2.InitialCatalog = "bddata";     //源数据库
            builder2.IntegratedSecurity = true;

            //调用复制数据库函数
            InsertTable(builder1.ConnectionString, builder2.ConnectionString, table);
        }

        //参数为两个数据库的连接字符串
        private static void InsertTable(string conString1, string conString2, string tabStr)
        {
            //连接数据库
            SqlConnection conn1 = new SqlConnection();
            conn1.ConnectionString = conString1;
            conn1.Open();

            SqlConnection conn2 = new SqlConnection();
            conn2.ConnectionString = conString2;
            conn2.Open();

            //填充DataSet1
            SqlDataAdapter adapter1 = new SqlDataAdapter("select * from " + tabStr, conn1);
            DataSet dataSet1 = new DataSet();

            if (dataSet1 != null)
            {
                adapter1.Fill(dataSet1, tabStr);
            }

            SqlDataAdapter adapter2 = new SqlDataAdapter("select * from " + tabStr, conn2);
            DataSet dataSet2 = new DataSet();

            SqlCommand cmd2 = new SqlCommand("select count(*) from " + tabStr, conn2);
            Object res2 = cmd2.ExecuteScalar();

            if (res2 != null)
            {
                int nCount = Convert.ToInt32(res2.ToString());
                if (nCount == 0)
                {
                    conn1.Close();
                    conn2.Close();
                    return;
                }
            }

            //填充DataSet2
            if (dataSet2 != null)
            {
                adapter2.Fill(dataSet2, tabStr);
            }

            //复制数据
            for (int j = 0; j < dataSet2.Tables[0].Rows.Count; j++)
            {
                dataSet1.Tables[0].LoadDataRow(dataSet2.Tables[0].Rows[j].ItemArray, false);
            }

            //将DataSet变换显示在与其关联的目标数据库
            SqlCommandBuilder cb = new SqlCommandBuilder(adapter1);
            adapter1.Update(dataSet1, tabStr);
            cb.RefreshSchema();

            Console.WriteLine("表" + tabStr + "复制成功!");

            conn1.Close();
            conn2.Close();

        }
    }
}
时间: 2024-10-06 14:37:53

C#复制数据库,将数据库数据转到另一个数据库的相关文章

从一个数据库,获取数据转存到另一个数据库。

1 INSERT INTO `game_2015newterm_user` (`uid`, `lq`, `xm`, `ct`, `by`, `lj`, `xmlbq`, `ctlbq`, `bylbq`, `ljlbq`, `tdate`) select uid, '0', '3', '0', '0', '0', '0', '0', '0', '0', '2015-03-16' from game_2015school_user 从表game_2015school_userzhong获取用户id

定时从一个数据库表中的数据存储到另外一个数据库中的表,而且怎么处理重复的数据?

原文:http://www.iteye.com/problems/77856 定时从一个数据库表中的数据存储到另外一个数据库中的表,而且怎么处理重复的数据? 表结构肯定是不能破坏,但是临时表如果是自己的数据库还行,问题是这个Oracle数据库是客户的数据库呢,你不能在他的数据库做任何多余的操作吧?还有别的更好的方法吗? 这个真的是比较困难. 首先,你要从客户机oracle取数据,因为这1分钟间隔之内不知道用户机新增加了哪些数据(大部分情况下是用户使用别的系统插入数据,而你又没有这个系统的程序接口

利用Sql实现将指定表数据导入到另一个数据库示例

因为工作中经常需要将数据从一个数据库导入到另一个数据库中,所以将这个功能写成一个存储过程,以方便调用.现在粘贴出来供大家参考: 注意:1,以下示例中用到了syscolumns,sysobjects等系统视图,在sql2005及以后的版本中,大家也可以使用sys.columns与sys.objects来代替,只要修改对应的字段即可.2,以下示例还用到了set identity_insert设置,有对该设置不太清楚的朋友可以点击链接查看其用法.3,结合sys.tables表与游标,大家可以循环调用以

PHP批量替换MySql数据库中的数据内容(替换MySql数据库内容源码)

PHP批量替换MySql数据库内容 UTF-8 1.0版 <?php //声明 //1.本源码开发意图:作者在使用一些CMS建站的时候发现很多CMS把网址写入到数据库了,如果换网址,那么就需要更新数据库中的老网址,如果一个一个修改,很不方便,所以开发此源码,供大家学习或使用: //2.源码开发者:杨波: //3.源码开发者联系QQ:773003231: //4.源码开发者博客:http://www.cnblogs.com/phpyangbo/: //5.源码开放性:任何人都可以随意更改或使用本源

用Java向数据库中添加数据成功,但在数据库中找不到添加的数据

程序如下:--第一个类:package com.StudentCurriculavariable;import java.sql.*;public class JDBC_Connection {static String drivername="sun.jdbc.odbc.JdbcOdbcDriver";static String url="jdbc:odbc:chong";static String username="sa";static S

把一个数据库表中的数据插入到另外一个数据库中的一张表中

数据库表结构不同 INSERT INTO [CodeFirstDbContext].[dbo].[Companies](CompanyID,CompanyName,Manager,CompanyType,IsDelete) SELECT CompID,Company,CName,ctype,0 FROM [YFDB2012].[dbo].[Company] 数据库表结构相同 INSERT INTO [CodeFirstDbContext].[dbo].[Companies] SELECT * F

利用Windows窗体快速/随机的向数据库插入大量数据

本文属于上课学习笔记,各位大神不喜勿喷哟!! 今天写的这个快速/随机的向数据库插入大量数据的博文的例子是向数据库用户信息表中随机插入上万条信息: 在数据库StuDB中创建学生信息表: create table TblStudent(  intId int primary key identity,  chvStuName nvarchar(20) not null,--学生名称  dtmBirthday datetime not null,--出生日期  chvStuUid nvarchar(1

数据库去除重复数据

小标记一下,数据库大量重复数据去除 下面是一个根据重复的name  移除的 create table temp select max(id) as id  from table1 group by name ;//name分组  拿到最大id  保存到临时表 delete table1 where id not in(select id from temp); 以上仅供参考,其他的比葫芦画瓢

查找数据库中重复数据T-SQL

查找数据库中重复数据T-SQL ========第一篇========= 在一张表中某个字段下面有重复记录,有很多方法,但是有一个方法,是比较高效的,如下语句: select data_guid from adam_entity_datas a where a.rowid > (select min(b.rowid) from adam_entity_datas b where b.data_guid = a.data_guid) 如果表中有大量数据,但是重复数据比较少,那么可以用下面的语句提高