java实现从一个远程oracle数据库提取数据,之后写入本地的SQLserver数据库里。

java实现从一个远程oracle数据库提取数据,之后写入本地的SQLserver数据库里。,第1张

链接数据用到JDBC,一般链接数据库都要用到数据库驱动、链接字符串、登录名、登录密码。这4个属性可以提取到一个父类中,每一种数据库写一个类继承父类。要是这些都没问题了,就可以用楼上哥们儿说的,简单工厂模式,简单工厂是用到了java中的多态特性。 import javasqlConnection; public abstract class BaseConnect { public BaseConnect(String driverClass, String url, String loginName, String password) { super(); thisdriverClass = driverClass; thisurl = url; thisloginName = loginName; thispassword = password; } protected String driverClass; protected String url; protected String loginName; protected String password; public abstract void initDriver(); public abstract Connection getConnect(); public abstract void closeConnect(Connection conn); } import javasqlConnection; import javasqlDriverManager; import javasqlSQLException; public class OraclConnect extends BaseConnect { public OraclConnect(String driverClass, String url, String loginName, String password) { super(driverClass, url, loginName, password); // TODO Auto-generated constructor stub } @Override public void initDriver() { try { ClassforName(driverClass); } catch (ClassNotFoundException e) { eprintStackTrace(); } } @Override public Connection getConnect() { try { return DriverManagergetConnection(url, loginName, password); } catch (SQLException e) { eprintStackTrace(); } return null; } @Override public void closeConnect(Connection conn) { try { if (conn != null && !connisClosed()) { connclose(); } } catch (SQLException e) { eprintStackTrace(); } } } 以此类推,上面代码是我随便一写,你自己再改进下。蓝屏

通过字符流把一次性把所有数据读出来

把数据split("|")后 放到一个数组里 下标为n%3==0的为第一种类型的数据 为1的是第二种类型

在连接数据库把数组里的数据insert到数据库里 就用原始的jdbc插入就很快了

首先说明一下序列化的知识:java中的序列化()机制能够将一个实例对象的状态信息写入到一个字节流中,使其可以通过socket进行传输、或者持久化存储到数据库或文件系统中;然后在需要的时候,可以根据字节流中的信息来重构一个相同的对象

序列化机制在java中有着广泛的应用,EJB、RMI等技术都是以此为基础的

序列化机制是通过java

io

类和java

io

类来实现的

在序列化(serialize)一个对象的时候,会先实例化一个对象,然后调用其writeObject()方法;在反序列化(deserialize)的时候,则会实例化一个对象,然后调用其readObject()方法

上面您的错误,就是在于有一个或者几个没有"序列化"的数据,导致没有办法创建输出流,导致发生的java

io

之所以要序列化,我猜测是因为您的数据里面存在一个对象型的数据,但是该对象没有实现序列化

比如:您有一个字段为address,这个字段您是通过一个类Address来描述的,Address里面可能有province、city、street等等属性或者一些setter和getter,如果这个类,没有实现序列化,往往会出现这个问题

毕竟没有看到程序,是我的一个猜测,请检查一下程序或者发出来进行进一步讨论

最简单的SQL语句:备份与还原SQL Server自带的数据库

在服务器上备份:

use Northwind

Backup database Northwind to disk='d:\Northwind_bakdat' with init

RESTORE DATABASE NorthNwind FROM DISK = 'd:\Northwind_bakdat'

备份数据库这一 *** 作在客户机上实现

客户机:machine

共享目录:share (要完全共享,可写权限)

backup:

bakcup database dbname to disk='\\machine\share\databak' with init

\\machine\share目录要有写权限。

restore:

restore database dbname from disk='\\machine\share\databak'

//

备注:restore 语句有很多的选项,可以查看企业管理器的在线帮助。如下

with replace, move 'dbname_dat' to 'c:\mssql7\data\dbnamemdf',

move 'dbname_log' to 'c:\mssql7\data\dbnamelog'

其中'c:\mssql7\data\'是服务器的目录,这点要注意

备份与还原数据库的相关内容:

SQL Server 70数据库备份有四种:完全数据库备份、增量数据库备份、事务日志备份、数据库文件或文件组备份。在数据库崩溃时,应该首先尝试备份事务日志(这一点很重要),然后恢复最后的数据库备份、该次数据库备份后的所有增量备份,最后恢复事务日志备份,这样可以将数据库恢复到崩溃前的状态。

备份是定期的,而不是实时的,所以利用备份并不能完全恢复数据库,它只能将数据库恢复到制作备份的那一刻 数据库日志是实时的,他忠实的记录下所有对数据库的更新 *** 作。因此,当磁盘出现故障造成数据库损坏时,就可以首先利用备份恢复数据库(大部分数据),然后运行数据库日志,即将备份后所做的 *** 作重新在做一遍,从而将数据库完全恢复。

--备份完整的数据库---------------------------------------------------------------

//创建一个备份设备:

1 Create the backup device for the full MyNwind backup///

USE master

EXEC sp_addumpdevice 'disk', 'MyNwind_2', 'c:\mssql7\backup\MyNwind_2dat'

2 Back up the full MyNwind database

BACKUP DATABASE MyNwind TO MyNwind_2

--备份数据库的日志---------------------------------------------------------------

--1 Create the log backup device

USE master

EXEC sp_addumpdevice 'disk', 'MyNwindLog1', 'c:\mssql7\backup\MyNwindLog1dat'

--2 Update activity has occurred before this point Back up the log of the MyNwind database

BACKUP LOG MyNwind TO MyNwindLog1

try

AdoQuery1Close;

AdoQuery1SQLClear;

AdoQuery1SQLAdd('backup database pubs');

AdoQuery1SQLAdd('to disk='+''''+edtPathText+'''');

AdoQuery1ExecSQL;

except

ShowMessage('备份数据库失败!');

exit;

end;

SQL server的备份

=========================================================================

=========================================================================

备份:

with adocommand_restore do//用ADocommand控件

begin

CommandText:='use Master';//

Execute;

CommandText:='execute sp_helpdevice';//系统存储过程

Execute ;

CommandText:='backup database '+'db_name'+' to disk='''+FileName+''' with init';//这行应当是这样

Execute ;

CommandText:='Use '+'db_name';//这行应当是这样

Execute ;

applicationMessageBox('已经成功备份数据库','数据库备份',MB_OK + MB_ICONINFORMATION);

end;

恢复:

with adocommand1 do//用AdoCommand控件

begin

CommandText:='use Master';

Execute;

CommandText:='execute sp_helpdevice';

Execute ;

CommandText:='Restore database '+'db_name'+' From disk='''+'c:\data1bak'+''' with replace';//这行应当是这样

Execute ;

CommandText:='Use '+'db_name';//这行应当是这样

Execute ;

applicationMessageBox('已经成功恢复数据库','数据库恢复',MB_OK + MB_ICONINFORMATION);

end;

注:db_name指数据库的名称

这种好像办不到,因为你不调动java,谁去判断数据库变化没啊?所以应该是调动java后,数据库变化,java处理的数据也变化,就像web程序,增删改查,只要有改变,刷新一下页面就能看到,不用restart。

首先得弄清楚 你的插入是对同一数据库 还是不同数据库的 *** 作数据量大的时候 是否要求即时性 是否牵扯到事物

本人推荐 做一个跑批程序 进行同步数据 这样能提高代码性能 以及程序性能 当然 你所说的瓶颈 无非就是大数据量对数据库的 *** 作次数 以及海量数据造成程序效率的一个瓶颈

以上就是关于java实现从一个远程oracle数据库提取数据,之后写入本地的SQLserver数据库里。全部的内容,包括:java实现从一个远程oracle数据库提取数据,之后写入本地的SQLserver数据库里。、急急急!java实现将txt文件数据导入数据库中。千万级别的数据。找效率方法。、在java里如何使用数据库中的序列(java中的序列化)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9704295.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存