博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PL/SQL Developer导出导入表数据+填坑指南
阅读量:6182 次
发布时间:2019-06-21

本文共 1450 字,大约阅读时间需要 4 分钟。

hot3.png

最近被分配一个迁移表的任务,数据库用的是 Oracle,作为新手的我折腾了几天,跌跌撞撞的踩了些坑(表迁移过程有数据丢失),总算是解决问题。本文记录表迁移及解决表数据丢失问题的过程。

我用的 Oracle 图形化客户端是 PL/SQL Developer,做表导出导入数据还是蛮方便的。

一、表导入导出

1. 工具 > 导出数据

工具>导出/入表

2. 导出表

导出表

这里在第 2 处有两种方式可供选择:

  • Oracle 导出:导出的脚本为 dmp 文件;
  • SQL 插入:导出的脚本为 sql 文件。

二者的区别,我做了个测试,6600 条测试数据,dmp 导出的文件只有 1456kb 大小,而导出的 sql 文件有 3228 kb。dmp 导出文件和导入文件的速度也比 sql 文件快得多。所以我选择的是导出 dmp 文件。

3. 表导入

操作与到导出一样,对话框也类似,这里就不赘述了。

4. 检查数据

表导入之后别以为就结束了,查询数据总条数是否和老表的数据总条数一样,因为我在操作过程中就发现有几张表少了几十条数据。

4. 分析原因

我的数据库字符集是 UTF8,老表的字符集是 GBK16。二者的区别是 UTF8 一个汉字占 3 个字节,GBK16 一个汉字占 2 个字节。

老表有一个字段 address 数据类型为 varchar2(200),存了 100 个汉字。在我的数据库里 100 个汉字要 300 个字节才能存储(字符集是 UTF8,一个汉字占 3 个字节)。所以在导入表时就报了一个错误:数据库表字段最大长度 200,导入数据长度 240

解决方法有两个:

  • 将我数据库表中字段的数据类型调成 varchar2(300),这样也能存储 100 个汉字。
  • 将我数据库字符集换成 GBK16,这样 varchar2(200) 仍然能存储 100 个汉字。

实际操作还是优先换字符集,谁也保不准是否还有其它字段数据类型过短,一个个排查有点麻烦。下面介绍字符集相关东东......

二、修改字符集

1. 查询字符集

报告 > DBA > NLS Database Parameters

第二行 NLS_CHARACTERSET: AL32UTF8 可见这里是 UTF8 编码。

查询字符集

2. 修改字符集

# PL/SQL 新建命令对话框SQL>sqlplus /nolog# 在弹出的黑窗口敲下面的命令SQL>conn / as sysdba# 若此时数据库服务器已启动,则先执行 SHUTDOWN IMMEDIATE 命令关闭数据库服务器,# 然后执行以下命令:SQL>shutdown immediateSQL>STARTUP MOUNTSQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;SQL>ALTER DATABASE OPEN;SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;SQL>SHUTDOWN IMMEDIATESQL>STARTUP

修改完成之后再次查看字符集,发现已经更改为 GBK16 了,现在重新导入表数据发现数据全部导进来了~

转载于:https://my.oschina.net/dkvirus/blog/1821970

你可能感兴趣的文章
什么是HTTP及相关知识
查看>>
Redis基本命令整理
查看>>
[分享]iOS开发-Objective C运行时(runtime)技术总结,好强大的runtime
查看>>
科技文献排版工具概览
查看>>
可能是一场很 IN 的技术分享
查看>>
iPad Multitasking:iOS9 iPad 分屏多任务操作教程
查看>>
Kubernetes 调度器实现初探
查看>>
物流机器人也将有国家标准了!
查看>>
C# yield关键字解析
查看>>
构造器、对象数组、对象属性、静态实例块、this关键字 ...
查看>>
Alphabet旗下Verily Study Watch心电图功能获FDA二类许可 ...
查看>>
为Kubernetes中任意应用添加基于oauth2的认证保护 (上) ...
查看>>
Spark in action on Kubernetes - Spark Operator的原理解析
查看>>
Python中浅拷贝和深拷贝的理解与研究
查看>>
「镁客早报」马斯克退出OpenAI;AI医疗公司数坤科技宣布完成2亿元B轮融资 ...
查看>>
中国联通和英特尔打造智慧冬奥 5G仍是英特尔战略重点
查看>>
一周集成行业智能监控应用,阿里云发布智能视频监控平台
查看>>
之前用的一个多进程python爬虫
查看>>
跳槽阿里需要掌握的面试重点和技术——P8架构师为你指路
查看>>
全栈必备 负载均衡
查看>>