欢迎投稿

今日深度:

oracle导入大数据、数据库之间迁移数据简单方法

oracle导入大数据、数据库之间迁移数据简单方法,oracle迁移


oracle导入数据的方式比较多:主要介绍两种十分简单的方式(通过已存在的工具完成导入)。

一、通过pl/sql developer导入.csv数据。

普通的pc机,这种方式一般只能导入20+w的数据,再多就有卡死的风险。

工具->工具导入器->打开,选择.csv文件导入:如下截图:


可以修改“每次提交”的数目,需要注意源数据与表字段的映射关系,然后点击“导入”,即可。


二、如果量达到100w级以上,建议用sql语句导入或其它方式。

在达到100w+后,最好在服务器上通过sqlplus连接导入,在pc端直接完成导入应该比较困难。 

sqlplus usr/pwd@'(DESCRIPTION =   (ADDRESS_LIST =	  (ADDRESS = (PROTOCOL = TCP)(HOST = *.*.*.*)(PORT = 1521))   )	(CONNECT_DATA =	  (SERVER = xxxx)  (SERVICE_NAME = xxxx)))'
然后输入insert into sql语句即可,导入完成后commit。


三、数据库之间迁移数据。

有时间需要从将一个数据库的数据,迁移到另外一个数据库,这就必然使用到DB link。如:我们需要从数据库A向数据库B导入数据。

在DBA分配DB link权限之后,使用下面语句在数据库A上创建DB link。

create database link dblink_AtoB
  connect to usr identified by pwd
  using '(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = *.*.*.*)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = xxxx)
      (SERVICE_NAME =xxxx)
    )
  )';

创建之后,可以通过pl sql developer,或者sql语句查看是否创建成功,此处我们创建的db link名为:dblink_AtoB。

然后使用类似如下的sql语句,即可完成导入数据。

insert into B_table@DBLINK_ATOB select * from usr.A_table;




Oracle中数据迁移的工具

SQL*Plus Copy命令
问题描述
怎样在SQL*Plus中实现不同的表之间的数据复制,不论是本地的还是远程的?
问题分析
在SQL*Plus中的copy命令,可以完成远程数据库、本地数据库或Oracle数据库与非Oracle数据库之间的数据复制。其性能与导入/导出相同。
copy的基本命令格式:

copy {from source_database |to destination_database}{append|create|insert|replace}destination_table[(column,column,column,...)]using<source_select_statement>

其中数据库连接使用如下格式:
username/password\]@connect_identifier
在数据复制时,复制支持的数据类型为:char、date、long、number、varchar2。 所示。

SQL*Plus Copy命令可在不同数据库之间,以及同一个数据库内的不同模式的表之间复制数据。
? •从远程数据库复制数据到本地数据库。
? •从本地数据库(默认)复制数据到远程数据库。
? •从一个远程数据库复制数据到另一个远程数据库。
通常,copy命令用于Oracle数据库与非Oracle数据库之间复制数据。如果在Oracle数据库之间复制数据,应该使用create table as 和insert的SQL命令。
•对目标表的控制方式有4种类型:replace、create、insert和append。
? •replace子句指定了被创建的表名。如果目标表已存在,则删除并用包含复制数据的表替代。若不存在,则创建目标表。
? •使用create子句可避免覆盖已存在的表。若目标表已存在,则copy报告一个错误;若不存在,则创建目标表。
? •insert插入数据到已存在的表。
将查询到的行插入到目标表,如果目标表不存在,copy返回错误。当使用insert时,using子句必须为目标表的每个列选择对应的列。
? •append是将查询到的行插入到目标表。如果不存在,则创建目标表并插入。
问题解答
首先应注意的是:

1)copy是SQL*Plus命令,不是SQL命令,在语句最后不必加分号;

2)由于多数copy命令比较长,所以,在分行时每行末尾必须有续行符(-),最后一行不加。
具体步骤如下。
步骤1:使用using子句指定一个查询,将其查询结果数据复制到本地数据库的当前模式下employee表中。例如:

copy from hr/hrd@rensh-replace employee-using select last_name,salary-from emp_details_view-where department_id=30

步骤2:使用create从一个远程数据库复制数据到本地数据库。

copy from hr/<your_password>@bostondb-create empcopy-using select*from hr

步骤3:为其他用户复制数据。

copy from hr/hr@dbora-create job-using select*from renbs.jobs

以用户h......余下全文>>
 

oracle 大量空间数据 怎快速 迁移?

一样的在server2上创建好,也就是server1上有什么表空间server2上也都建上 而且大小要分配好。
2、在server2上创建好要迁移的应用用户,应用用户名,用户权限等也要和server1上一样。
3、把server1按USER进行exp导出。
4、把导出文件imp到server2即可。

用户很多那就采取下面步骤,更简单:
1、server1执行exp按database导出。
2、然后server2上执行导入。
不用建表空间和用户。

如果server1能停机的话还有更简单的:
就是直接把server1的oracle 关掉,报数据文件,控制文件,redolog文件,参数文件,按照对应的目录copy到server2,然后直接在server2上打开数据库就可以了。
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/2272.html NewsArticle oracle导入大数据、数据库之间迁移数据简单方法,oracle迁移 oracle导入数据的方式比较多:主要介绍两种十分简单的方式(通过已存在的工具完成导入)。 一、通过pl/sql developer导入.cs...
评论暂时关闭