oracle 数据怎么导入

oracle 数据怎么导入,第1张

我给你一些数据库常用的导入导出命令吧:\x0d\该命令在“开始菜单>>运行>>CMD”中执行\x0d\一、数据导出(expexe)\x0d\1、将数据库orcl完全导出,用户名system,密码accp,导出到d:\daochudmp文件中\x0d\exp system/accp@orcl file=d:\daochudmp full=y\x0d\\x0d\2、将数据库orcl中scott用户的对象导出\x0d\exp scott/accp@orcl file=d:\daochudmp owner=(scott)\x0d\\x0d\3、将数据库orcl中的scott用户的表emp、dept导出\x0d\exp scott/accp@orcl file= d:\daochudmp tables=(emp,dept)\x0d\\x0d\4、将数据库orcl中的表空间testSpace导出\x0d\exp system/accp@orcl file=d:\daochudmp tablespaces=(testSpace)\x0d\\x0d\二、数据导入(impexe)\x0d\1、将d:\daochudmp 中的数据导入 orcl数据库中。\x0d\imp system/accp@orcl file=d:\daochudmp full=y\x0d\\x0d\2、如果导入时,数据表已经存在,将报错,对该表不会进行导入;加上ignore=y即可,表示忽略现有表,在现有表上追加记录。\x0d\imp scott/accp@orcl file=d:\daochudmp full=y ignore=y\x0d\\x0d\3、将d:\daochudmp中的表emp导入\x0d\imp scott/accp@orcl file=d:\daochudmp tables=(emp)

1、Oracle11g默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出。

2、设置deferred_segment_creation

参数为FALSE后,无论是空表还是非空表,都分配segment。

在sqlplus中,执行如下命令:

SQL>alter

system

set

deferred_segment_creation=false;

查看:

SQL>show

parameter

deferred_segment_creation;

该值设置后只对后面新增的表产生作用,对之前建立的空表不起作用。

3、可以使用手工为空表分配Extent的方式,来解决导出之前建立的空表的问题。说明如下:

31

使用ALLOCATE

EXTENT的说明

使用ALLOCATE

EXTENT可以为数据库对象分配Extent。其语法如下:

-----------

ALLOCATE

EXTENT

{

SIZE

integer

[K

|

M]

|

DATAFILE

'filename'

|

INSTANCE

integer

}

-----------

可以针对数据表、索引、物化视图等手工分配Extent。

ALLOCATE

EXTENT使用样例:

ALLOCATE

EXTENT

ALLOCATE

EXTENT(SIZE

integer

[K

|

M])

ALLOCATE

EXTENT(DATAFILE

'filename')

ALLOCATE

EXTENT(INSTANCE

integer)

ALLOCATE

EXTENT(SIZE

integer

[K

|

M]

DATAFILE

'filename')

ALLOCATE

EXTENT(SIZE

integer

[K

|

M]

INSTANCE

integer)

针对数据表 *** 作的完整语法如下:

-----------

ALTER

TABLE

[schema]table_name

ALLOCATE

EXTENT

[({

SIZE

integer

[K

|

M]

|

DATAFILE

'filename'

|

INSTANCE

integer})]

-----------

故,需要构建如下样子简单的SQL命令:

-----------

alter

table

aTabelName

allocate

extent

-----------

32

构建对空表分配空间的SQL命令,

查询当前用户下的所有空表(一个用户最好对应一个默认表空间)。命令如下:

-----------

SQL>select

table_name

from

user_tables

where

NUM_ROWS=0;

-----------

根据上述查询,可以构建针对空表分配空间的命令语句,如下:

-----------

SQL>Select

'alter

table

'||table_name||'

allocate

extent;'

from

user_tables

where

num_rows=0

-----------

批量输出上述生成的SQL语句,建立C:\createsqlsql,其内容如下:

-----------

set

heading

off;

set

echo

off;

set

feedback

off;

set

termout

on;

spool

C:\allocatesql;

Select

'alter

table

'||table_name||'

allocate

extent;'

from

user_tables

where

num_rows=0;

spool

off;

-----------

执行C:\createsqlsql,命令如下:

-----------

SQL>@

C:\createsqlsql;

-----------

执行完毕后,得到C:\allocatesql文件。

打开该文件会看到,已经得到对所有空表分配空间的命令SQL语句。

34

执行SQL命令,对空表分配空间:

执行C:\allocatesql,命令如下:

-----------

SQL>@

C:\allocatesql;

-----------

执行完毕,表已更改。

34

此时执行exp命令,即可把包括空表在内的所有表,正常导出。

另外:Oracle11g中,对密码是大小写敏感的,即密码中的字母是区分大小写的。

在Oracle10g中及以前,密码中的字母大小写无所谓。

*** 作顺序:

1、打开本地终端,输入telnet命令:

>> telnet 服务器ip

输入用户名 密码 登陆成功

2、转到oracle用户下,输入:

>> su - oracle

>> exp

根据Oracle的exp命令提供的到处向导,导出用户需要的数据到dmp文件中 myxxxoutxxxdmp

3、接下来是讲这个dmp文件传到本地

两种方式

1、如果服务器端开启了ftpd 或者 sshd ,可以从本地连接过去,把dmp文件下载到本地

重新打开一个本地终端

>> ftp 服务器ip

输入用户名 密码 登陆成功

>> cd dmp文件目录的相对路径

>> get myxxxoutxxxdmp

2、如果本地服务器开启了相关服务 可以从服务器端上传dmp文件到本地

>> cd dmp文件目录的路径

>> ftp 服务器ip

输入用户名 密码 登陆成功

>> put myxxxoutxxxdmp

最后就是本地库的导入了

在终端中输入 imp 根据向导一步一步设置导入

或者用开发工具帮助导入

以上就是关于oracle 数据怎么导入全部的内容,包括:oracle 数据怎么导入、如何用EXP导出oracle数据库中没有记录的表、如何从linux 里导出oracle 数据库,命令是什么,请举例等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存