不同oracle数据库中数据转移

最近工作上有一个小小的需求,转移不同oracle数据库中的数据。记录一下:

两个数据库都是通过远程访问的方式进行数据的读取和写入。数据中转我采用的是使用txt文件。

首先需要做的是:连接ORACLE数据库,这个比较简单。

其次需要做的是:读取ORACLE_A数据库中的数据,保存到txt文本中,贴出代码:

里面就两个点:txt文本的创建和写入。

string data = "select * from GSM设备表";
            DataSet dsCount = myOracleJz.GetDataSetFromSql(data);
            FileStream fs = new FileStream(@"C:\Users\Administrator\Desktop\GSM设备表.txt", FileMode.OpenOrCreate);
            fs.Flush();
            fs.Close();
            for (int i = 0; i < dsCount.Tables[0].Rows.Count; i++)
            {
                StreamWriter sw = File.AppendText(@"C:\Users\Administrator\Desktop\GSM设备表.txt"); //保存到指定路径
                //sw.Write("\r\n");
                for (int j = 0; j < dsCount.Tables[0].Columns.Count; j++)
                {
                    if (dsCount.Tables[0].Rows[i][j].ToString() == "")
                    {
                        sw.Write(dsCount.Tables[0].Rows[i][j].ToString() + "null" + "\r\n");
                    }
                    else
                    {
                        sw.Write(dsCount.Tables[0].Rows[i][j].ToString() + "\r\n");
                    }
                }
                sw.Flush();
                sw.Close();

这个程序值得我记录的关键点在于下面的东西:数据库的插入。

在创建ORACLE数据库的时候,每一列都是有数据结构的,我们在插入的时候,插入的数据格式需要和表中的数据结构一致。此处我涉及到的数据结构一共有四种:

CHAR

NUM

DATE

FLOAT

每种数据结构的要求都不同,

在插入CHAR型的时候,需要加上单引号;

NUM型不需要加单引号,

FLOAT也不需要添加单引号。

DATE型,比较特殊,需要进行一下数据格式的转换如下:to_date('2005-12-25,13:25:59','yyyy-mm-dd,hh:mi:ss')

                string sql = "insert into 通知表(姓名,编号,说明,手机号码,创建时间) values( '" + sArray[j] + "','" + sArray[j + 1] + "','" + sArray[j + 2] + "','" + sArray[j + 3] + "'," + "to_date('"+ data + "','yyyy-mm-dd hh24:mi:ss')" + ")";

在程序调试过程中,遇到了以下报错:

缺失括号(sql语句引号使用错误)

违反唯一约束条件(主键插入的内容发生重复)

文字与格式字符串不匹配(主要是因为char型数据没有添加引号)

违反完整约束条件--未找到父项关键字(插入字符缺失,一般是列名不对)

期间还遇到了无监听程序的错误,不过通过重新打开项目解决掉了。

在进行数据插入时,如果想空出某一列的话:加两个单引号即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值