PL/SQL Developer导出导入表数据

使用Oracle 图形客户端 PL/SQL Developer 导出导入数据。

二者的区别,我做了个测试,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

解决方法有两个:

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

二、修改字符集

1. 查询字符集

报告 > DBA > NLS Database Parameters

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

  1. 表的导入导出

  2. 1. 工具 > 导出数据
  3. 导出表
  4. 这里在第 2 处有两种方式可供选择:

  5. Oracle 导出:导出的脚本为 dmp 文件;
  6. SQL 插入:导出的脚本为 sql 文件。
  7. 将我数据库表中字段的数据类型调成 varchar2(300),这样也能存储 100 个汉字。
  8. 将我数据库字符集换成 GBK16,这样 varchar2(200) 仍然能存储 100 个汉字。

2. 修改字符集

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

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值