oracle将数据导入指定表空间

oracle将数据导入指定表空间,第1张

在使用oracle的 exp 和imp 导出导入的时候 有时遇到 需要导入的数据不是同一个用户的 也不一定是同一个表空间 例如 源数据库 上用户为aaa 表空间aa 目标数据库 用户为bbb 表空间bb 当用imp导入以后查看发现 bbb没有aa这个表空间 但是还是导入进去了 不过全部都跑到了users里面 这种情况时常有发生 特别是迁移数据库的时候 那么为了更好的管理表空间和数据表 可以采用下面的方式 连接目标数据库 oracle@UCITDB:~> sqlplus /nolog SQLPlus: Release Production on Fri Oct : : Copyright (c) Oracle All rights reserved SQL> CONN /AS SYSDBA Connected SQL> revoke unlimited tablespace from ucitdba; Revoke succeeded 删除该用户的表空间使用限制 SQL> alter user ucitdba quota on users; User altered 修改表空间使用参数 SQL> alter user ucitdba quota unlimited on ucit; User altered 将目标表空间的无限制使用权限赋给用户 SQL> quit Disconnected from Oracle Database g Enterprise Edition Release bit Production With the Partitioning OLAP and Data Mining options imp ucitdba/ fromuser=ucitdba touser=ucitdba file=/opt/oracle/oradata/backup/ucit_ dmp tablespaces=ucit full=y 具体地址根据自己的设置 回车搞定 lishixinzhi/Article/program/Oracle/201311/18725

用途:将远程服务器的数据库拷到本地。

Java代码

复制代码代码如下:

mysqldump -h '114212111123' -uROSE -pxxxooo --opt --compress ITSM --skip-lock-tables | mysql -h localhost -uroot -proot ITSMC

解释:

114212111123 远程服务器名称

ROSE 远程数据库登录名

xxxooo 远程数据库登录密码

ITSM远程数据库名(即:复制的源)

localhost 本地数据库名称(一般情况下都是这个)

root 本地数据库登录名(一般情况下都是这个)

root 本地数据库登录密码(一般情况下都是这个)

ITSMC 本地(即:复制的目的)

sql解释:

mysqldump 是mysql的一个专门用于拷贝 *** 作的命令

--opt *** 作的意思

--compress 压缩要传输的数据

--skip-lock 忽略锁住的表(加上这句能防止当表有外键时的报错)

-tables 某数据库所有表

-h 服务器名称

-u 用户名(后面无空格,直接加用户名)

-p 密码(后面无空格,直接加密码)

注意:

-u、-p的后面没有空格,直接加用户名和密码!!!

将Oracle数据导入MySQL方法:

先把oracle表中的数据另存在excel表中,再把excel表中数据导入到mysql中。

这里要将oracle中表eventlogs的数据导入到mysql中。

步骤如下:

  1、在PL/SQL中用select 搜索到eventlogs表的所有数据,然后右键点击"Copy to Excel";如下图所示:

 2、将数据保存为excel表,并重名;如下图:

  3、打开mysql的可视化工具,我这里是Navicat,选择表,点击导入向导;如下图所示:

4、选择上图中"导入类型"的"execel文件",然后点击"下一步";如下图所示:

5、接下来会让你选择文件,选择你已经保存的excel文件,并选择“SQL Result”,如下图所示:

6、然后一直点击下一步,最后一步点击开始。会出现一个“sql result”的表,重命名为你想要的表即可。如图所示:

mysqldump备份还原和mysqldump导入导出语句大全详解mysqldump备份:mysqldump -u用户名 -p密码 -h主机数据库 a -w "sql条件" --lock-all-tables >路径案例:mysqldump -uroot -p1234 -hlocalhost db1 a -w "id in (select id from b)" --lock-all-tables > c:\aatxtmysqldump还原:mysqldump -u用户名 -p密码 -h主机数据库<路径案例:mysql -uroot -p1234 db1 < c:\aatxtmysqldump按条件导出:mysqldump -u用户名 -p密码 -h主机数据库 a --where "条件语句" --no-建表>路径mysqldump -uroot -p1234 dbname a --where "tag='88'" --no-create-info> c:\asqlmysqldump按导入:mysqldump -u用户名 -p密码 -h主机数据库<路径案例:mysql -uroot -p1234 db1 < c:\atxt mysqldump导出表:mysqldump -u用户名 -p密码 -h主机数据库表案例:mysqldump -uroot -p sqlhk9 a --no-data讲一下 mysqldump 的一些主要参数 --compatible=name 它告诉 mysqldump,导出的数据将和哪种数据库或哪个旧版本的 MySQL 服务器相兼容。值可以为 ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options 等,要使用几个值,用逗号将它们隔开。当然了,它并不保证能完全兼容,而是尽量兼容。 --complete-insert,-c 导出的数据采用包含字段名的完整 INSERT 方式,也就是把所有的值都写在一行。这么做能提高插入效率,但是可能会受到 max_allowed_packet 参数的影响而导致插入失败。因此,需要谨慎使用该参数,至少我不推荐。 --default-character-set=charset 指定导出数据时采用何种字符集,如果数据表不是采用默认的 latin1 字符集的话,那么导出时必须指定该选项,否则再次导入数据后将产生乱码问题。--disable-keys 告诉 mysqldump 在 INSERT 语句的开头和结尾增加 /!40000 ALTER TABLE table DISABLE keys /; 和 /!40000 ALTER TABLE table enable keys /; 语句,这能大大提高插入语句的速度,因为它是在插入完所有数据后才重建索引的。该选项只适合 MyISAM 表。--extended-insert = true|false 默认情况下,mysqldump 开启 --complete-insert 模式,因此不想用它的的话,就使用本选项,设定它的值为 false 即可。 --hex-blob 使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用本选项。影响到的字段类型有 binARY、VARbinARY、blob。--lock-all-tables,-x 在开始导出之前,提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭 --single-transaction 和 --lock-tables 选项。--lock-tables 它和 --lock-all-tables 类似,不过是锁定当前导出的数据表,而不是一下子锁定全部库下的表。本选项只适用于 MyISAM 表,如果是 Innodb 表可以用 --single-transaction 选项。--no-create-info,-t 只导出数据,而不添加 CREATE TABLE 语句。--no-data,-d 不导出任何数据,只导出数据库表结构。--opt 这只是一个快捷选项,等同于同时添加 --add-drop-tables --add-locking --create-option --disable-keys --extended-insert --lock-tables --quick --set-charset 选项。本选项能让 mysqldump 很快的导出数据,并且导出的数据能很快导回。该选项默认开启,但可以用 --skip-opt 禁用。注意,如果运行 mysqldump 没有指定 --quick 或 --opt 选项,则会将整个结果集放在内存中。如果导出大数据库的话可能会出现问题。--quick,-q 该选项在导出大表时很有用,它强制 mysqldump 从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中。--routines,-R 导出存储过程以及自定义函数。--single-transaction 该选项在导出数据之前提交一个 BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于事务表,例如 InnoDB 和 BDB。本选项和 --lock-tables 选项是互斥的,因为 lock TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用 --quick 选项。 --triggers 同时导出触发器。该选项默认启用,用 --skip-triggers 禁用它。其他参数详情请参考手册,我通常使用以下 SQL 来备份 MyISAM 表:/usr/local/mysql/bin/mysqldump -uyejr -pyejr "--default-character-set=utf8 --opt --extended-insert=false "--triggers -R --hex-blob -x db_name > db_namesql使用以下 SQL 来备份 Innodb 表:/usr/local/mysql/bin/mysqldump -uyejr -pyejr "--default-character-set=utf8 --opt --extended-insert=false "--triggers -R --hex-blob --single-transaction db_name > db_namesql另外,如果想要实现在线备份,还可以使用 --master-data 参数来实现,如下:/usr/local/mysql/bin/mysqldump -uyejr -pyejr "--default-character-set=utf8 --opt --master-data=1 "--single-transaction --flush-logs db_name > db_namesql它只是在一开始的瞬间请求锁表,然后就刷新binlog了,而后在导出的文件中加入change master 语句来指定当前备份的binlog位置,如果要把这个文件恢复到slave里去,就可以采用这种方法来做。12 还原用 mysqldump 备份出来的文件是一个可以直接倒入的 SQL 脚本,有两种方法可以将数据导入。直接用 mysql 客户端 例如:/usr/local/mysql/bin/mysql -uyejr -pyejr db_name < db_namesql用 SOURCE 语法(实验不成功!!!) 其实这不是标准的 SQL 语法,而是 mysql 客户端提供的功能,例如:SOURCE /tmp/db_namesql;这里需要指定文件的绝对路径,并且必须是 mysqld 运行用户(例如 nobody)有权限读取的文件。

如何用sql语句实现从服务器上MySQL数据库导出数据至本地

用途:将远程服务器的数据库拷到本地。

Java代码

复制代码代码如下:

mysqldump

-h

'114212111123'

-uROSE

-pxxxooo

--opt

--compress

ITSM

--skip-lock-tables

|

mysql

-h

localhost

-uroot

-proot

ITSMC

解释:

114212111123

远程服务器名称

ROSE

远程数据库登录名

xxxooo

远程数据库登录密码

ITSM远程数据库名(即:复制的源)

localhost

本地数据库名称(一般情况下都是这个)

root

本地数据库登录名(一般情况下都是这个)

root

本地数据库登录密码(一般情况下都是这个)

ITSMC

本地(即:复制的目的)

sql解释:

mysqldump

是mysql的一个专门用于拷贝 *** 作的命令

--opt

*** 作的意思

--compress

压缩要传输的数据

--skip-lock

忽略锁住的表(加上这句能防止当表有外键时的报错)

-tables

某数据库所有表

-h

服务器名称

-u

用户名(后面无空格,直接加用户名)

-p

密码(后面无空格,直接加密码)

注意:

-u、-p的后面没有空格,直接加用户名和密码!!!

   迁移MySQL数据库通常只需要几个简单的步骤,但是由于您要转移的数据量可能比较庞大,因此一般耗时也会比较长。

 

     

 

    下面的步骤将指导您如何从旧的服务器上导出MySQL数据库,对它进行安全加固;然后将其复制并导入到新的服务器上,以保证数据的完整。

 

    将MySQL数据库导出至转储文件(dump file)

 

    Oracle提供了一个名为mysqldump的工具,允许您轻松地将数据库结构和其数据导出到一个SQL的转储文件。您可以使用如下的命令:

 

    1mysqldump -u root -p --opt [database name] > [database name]sql 

 

    不过,请注意如下几点:

 

    我们可以使用--single-transaction的标志,以避免数据库在导出数据的过程中被锁死。这样能够在将数据导出到转储文件的同时,您仍可继续在旧的数据库上更新数据。不过请注意,那些在导出进程已经开始之后被更新的数据,是不会被导入转储文件之中的。

 

    在运行该命令之前,请务必将[database name]替换成您的实际数据库名称。

 

    请输入您自己的用户名和相对应的密码,并确保该用户具有备份数据库所需的权限。

 

    安全加固备份文件

 

    在大多数情况下,数据是一家企业的最重要的资产。因此,我们不希望数据库的各种备份被暴露在不受保护的服务器上,因为这样有可能会造成错误地泄露,甚至会出现被黑客窃取等更为糟糕的状况。

 

    因此,通常您可以尝试的做法是:压缩、加密文件,然后删除原文件。在Linux *** 作系统上,请使用以下的命令对已压缩文件进行加密:

 

    1zip --encrypt dumpzip dbsql 

 

    在压缩开始之前,系统将提示您输入密码。

 

    传输备份文件

 

    至此,我们已经获得了一个加密的转储文件。下面让我们通过网络使用SCP命令,将其传输到新的服务器上:

 

    1scp /path/to/source-file user@host:/path/to/destination-folder/ 

 

    将MySQL转储导入新服务器

 

    通过上面一步,我们已将备份文件传到了新的服务器上,下面让我们来进行解密和提取:

 

    1unzip -P your-password dumpzip 

 

    为了存储空间和安全方面的原因,一旦文件导入成功,请记得删除其对应的转储文件。

 

    您可以使用以下的命令来导入文件:

 

    1mysql -u root -p newdatabase < /path/to/newdatabasesql 

 

    在新服务器上验证导入的数据

 

    现在我们在新服务器上已经导入了数据库,那么我们就需要一种方法来验证数据的真实存在,并确保没有任何遗漏。

 

    我建议您同时在旧的和新的数据库上运行如下查询,并将获得的结果进行对比。

 

    该查询会在所有的表里计算行数,以显示出新、旧数据库中的数据量。

 

    1SELECT   

    

    2TABLE_NAME,   

    

    3TABLE_ROWS  

 

    4FROM   

    `

    5information_schema``tables`  

 

    6WHERE   

    `

    7table_schema` = 'YOUR_DB_NAME'; 

 

    此外,我建议您检查各个表中数字列的MIN和MAX记录,以确保数据本身是有效的,而不仅仅是看数据的总量(虽然这是查询所唯一能够读出的值)。另一种可供测试的选择是将数据库从新的服务器导出为SQL转储文件,并将其与旧服务器的SQL转储文件做比较。

 

    此外,在应用程序被迁移之前,我建议您先将一个应用程序的实例重定向到新的数据库上,以确认一切运行正常。

 

    另一种导出和导入的选项

 

    我们之所以把该选项放在最后,是因为我们的确不建议您去使用它。

 

    该方法实现起来非常的容易,因为它仅使用一个命令,便能一次性将转储文件导出、传输、并将其数据导入到新的数据库之中。

 

    而它的不足之处在于,一旦其网络链接断掉,您就需要重新启动它了。

 

    因此,我们认为它并不值得被推荐,尤其是在大型数据库中,可能会非常不适用。

 

    当然,如果您非要尝试一下的话,可以使用如下的命令:

 

    1mysqldump -u root -pPassword --all-databases | ssh user@new_hosthostcom 'cat - | mysql -u root -pPassword' 

 

    重要提示

 

    请确保在新旧两处,安装有相同官方发行版本的MySQL服务器。否则,你需要按照MySQL网站上的升级说明来进行统一(请参见(>

 

    请确保您在旧的服务器上拥有足够的空间来保存转储文件和压缩文件(应该有db_size×2的空间)。

 

    请确保您在新的服务器上拥有足够的空间来保存加密的和解密的转储文件、并能导入数据库(应该有db_size×3的空间)。

 

    如果您曾经考虑过只是将datadir从一个数据库转移到另一个的话,我建议您最好不要这样做。否则,您会搞乱数据库的内部结构,而且会给将来可能的问题埋下隐患。

 

    在新的服务器配置中,请不要忘了配置诸如innodb_log_file_size这样的重要标志。因为如果忘记了根据新服务器的规格而更新配置的话,很可能会导致严重的性能问题。

 

    在许多情况下,一般升级到新的数据库服务器的初衷是为了提高查询性能。而如果此类升级没有达到预期的改善,那么您就应该考虑去优化SQL查询,而不仅仅是升级硬件那么简单了

您好,很高兴为您解答。

1、安装postgresql

yum install postgresql postgresql-server

mysql占用端口3306 pgsql是5432

2、导入整个数据库

psql -U postgres(用户名) 数据库名(缺省时同用户名) < /data/dumsql

3、导出整个数据库

pg_dump -h localhost -U postgres(用户名) 数据库名(缺省时同用户名) >/data/dumsql

4、导出某个表

pg_dump -h localhost -U postgres(用户名) 数据库名(缺省时同用户名) -t table(表名) >/data/dumsql

5、压缩方法

一般用dump导出数据会比较大,推荐使用xz压缩

压缩方法 xz dumsql 会生成 dumsqlxz 的文件

6、xz压缩数据倒数数据库方法

xzcat /data/dumsqlxz | psql -h localhost -U postgres(用户名) 数据库名(缺省时同用户名)

如若满意,请点击右侧~~答案,如若还有问题,请点击追问

希望我的回答对您有所帮助,望~~!

以上就是关于oracle将数据导入指定表空间全部的内容,包括:oracle将数据导入指定表空间、mysql数据库怎样从外网环境中将数据库导到本地、如何将Oracle数据导入MySQL等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)