将备份中的某条数据插入到现在用的数据库中
答案:2 悬赏:80 手机版
解决时间 2021-03-16 14:59
- 提问者网友:却不属于对方
- 2021-03-16 04:47
不小心将数据库表中一条数据删除了,还原的话影响太大,只能通过取出备份中的这条数据插入到数据库中,怎么做呢
最佳答案
- 五星知识达人网友:洎扰庸人
- 2021-03-16 06:09
select * into 现在的表 from 备份表insert into 现在的表(字段1, 字段2) select 字段1, 5 from 备份表 以上两句都是将 备份表 的数据插入到 现在的表,但两句又有区别的:第一句(select into from)要求目标表(当前表)不存在,因为在插入时会自动创建。
第二句(insert into select from)要求目标表(当前表)存在,由于目标表已经存在,所以我们除了插入源表(备份表)的字段外,还可以插入常量,如例中的:5。
第二句(insert into select from)要求目标表(当前表)存在,由于目标表已经存在,所以我们除了插入源表(备份表)的字段外,还可以插入常量,如例中的:5。
全部回答
- 1楼网友:何以畏孤独
- 2021-03-16 06:37
这个问题的实现通常与各个jdbc driver的实现有关. 目前大多数jdbc driver采用本地编码格式来传输中文字符,例如中文字符"0x4175"会被转成"0x41"和"0x75"进行传输. 因此我们需要对jdbc driver返回的字符以及要发给jdbc driver的字符进行转换. 当用jdbc driver向数据库中插入数据时,需要先将unicode转成native code; 当 jdbc driver从数据库中查询数据时,则需要将native code转换成unicode. 下面给出了这两种转换的实现: string native2unicode(string s) { if (s == null || s.length() == 0) { return null; } byte[] buffer = new byte[s.length()]; for (int i = 0; i s.length(); i++) { if (s.charat(i)>= 0x100) { c = s.charat(i); byte []buf = (""+c).getbytes(); buffer[j++] = (char)buf[0]; buffer[j++] = (char)buf[1]; } else { buffer[j++] = s.charat(i); } } return new string(buffer, 0, j); } 除使用以上两个方法之外,有些jdbc driver如果对jdbc driver manager设置了正确 的字符集属性,以上2个方法就不需要了.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯