一.数据迁移工具使用
-
DTS迁移提示“6092数据大小已超过可支持范围”如何分析处理?
- 一般情况下,此问题由于实际数据超过了达梦数据库支持的大小范围,重点分析被 迁移数据的数字类型字段(INT、BIGINT、NUMBER),找到造成引起报错的字段后, 观察数据可以考虑将字段改为BIGINT或者VARCHAR字符字段以规避错误。
- 页大小小了;用更大的页大小,8k不能到varchar4000达梦建立实例的时候,默认 是页大小默认是8,可以调高一点,两个建库参数有影响,一个字符集,一个“长 度以字符为单位”
达梦数据库根据页大小,varchar字段最大长度有限制。具体限制如下:
3. 把报错的表的“启用超长记录”打开
4.找一下是哪个字符类型的列太长了,改成Text
这种方式是在有表结构的基础上,且可以确认到记录超长字段,设置【字符类型】 为 Text
2.如何使用管理工具导入SQL数据?
1.将SQL语句粘贴到查询窗口,然后执行。这种方式适合SQL不多的情况下使用,如果SQL比较多,比如几万条,那么在复制粘贴的时候 就会受性能影响了,可能会导致管理工具卡死。
2.将SQL保存到SQL类型的文件中,然后用管理工具打开SQL文件。这种方式也相对简单,但是如果文件大小不能超过20M,当超过20M 时会报“文件过于庞大”错误。
3.使用管理工具的“执行脚本”功能
这种方式适合导入比较大的脚本,测试导入3.42G的SQL也是可以的,但还是不建议直接这样导入很大的SQL,如果不能及时提交会 使用大量的内存资源。
4.如果要导入比较大的SQL还可以考虑使用迁移工具将数据SQL导入达梦数据库, 使用迁移工具还可以设置一次性提交的语句条数和缓存 批次,这样可以提高数据导 入的效率。(此方法也适用将Excel数据导入达梦数据库)
3.达梦如何导出数据为SQL格式?
1.使用管理工具导出
(1)使用生成SQL脚本方式生成建表语句,并保存为sql文件,或直接生成文件
(2) 查看表属性中的DDL,复制语句并保存为SQL文件,导出数据,此方法在数据量不大的情况下可以使用。查询出表数据,在结果中 右 键选择“导出所有”,选路径然后选要保存的类型为 SQL并输入文件名。
2.使用“达梦数据迁移工具”(该方法适合导出比较大的表)
4.迁移对象说明
表/视图/序列对象是以不同的图标区分的
二. DISQL使用
1.装完数据库,bin下面没有disql文件
原因:安装的时候未选择数据库服务组件,所以只有客户端组件,不包含相关的dm命令行工具。
解决:
(1) 从已经安装了达梦数据库服务组件的安装文件下复制一个bin,覆盖当前安装目录下 的bin。
(2) 重新安装数据库,选择数据库服务组件
2.Disql 登陆含特殊字符的密码处理方法
window:
disql关键字符(以 aaa/aaa 为例)
- 对于disql而言,需要先对密码字符串的使用双引号括起来==>”aaa/aaa”
- 对于window操作系统而言,需要在最外面加双引号并转义==>” ” ”aaa/aaa” ” ”
空格(以 aaa aaa 为例)
- 对于disql而言,无需进行任何操作
- 对于window操作系统而言,需要在最外面加双引号==>”aaa aaa”
双引号(以 aaa”aaa 为例)
- 对于disql而言,需要使用双引号将密码字符串括起来并将字符串中的双引号使用双引号转义==>”aaa” ”aaa”
- 对于window操作系统而言,需要对双引号转义和最外层加双引号==>” ” ”aaa” ”aaa” “ “
Linux操作系统:
bash 的引号设计为:在单引号中,所有的特殊字符都失去其特殊含义;在双引号中,特殊字符包括:美元符($)、反引号(`)、转义符(\)、感叹号(!)。如果密码中没有单引号的,应该都只有外面加单引号就可以解决了;如果密码只有单引号,那么可以将单引号用双引号括起来;如果既有单引号又有美元符($)、反引号(`)、转义符(\)、感叹号(!)四个特殊字符,那么在特殊字符之前全部加\转义就好了。其次,在操作系统要求的基础上,增加 DIsql 对关键字和双引号的要求。
disql关键字符(以 aaa/aaa 为例)
对于disql而言,需要先对密码字符串的使用双引号括起来==>”aaa/aaa”
对于Linux操作系统而言,此密码中不含有单引号,只需在最外面加单引号==>’ ”aaa/aaa” ‘
双引号(以 aaa”\aaa 为例)
对于disql而言,需要对双引号需要使用双引号括起来,同时双引号需要转义==>”aaa” ”\aaaa”
对于Linux操作系统而言,此密码中不含有单引号,只需在最外面加单引号==>’ ”aaa” ”\aaaa” ‘
单引号(以 aaaa'aaaa 为例)
对于disql而言,无需进行任何操作
对于Linux操作系统而言,只能将单引号放入双引号中==>”aaaa'aaaa”
单引号+双引号(以 aaa”'aaaa 为例)
对于disql而言,双引号作为特殊字符,需要使用双引号在括起来,同时使用双引号对双引号转义==>”aaa” ” ‘aaaa”
对于Linux操作系统而言,单引号需要放在双引号中,在双引号中表示双引号则使用反斜杠转义双引号==>”\”aaa\”\” ‘aaaa\” ”
如何转义双引号:
- DIsql 的要求使用双引号对双引号内的双引号转义。
- WINDOWS 命令行,使用双引号或者反斜杠对双引号内的双引号转义。
LINUX 命令行,使用反斜杠对双引号内的双引号转义
特殊情况:
有时候密码包含了@等特殊字符导致disql无法直接连接和运行。需要通过转移符来处理。disql转义符使用如下:
- linux下,需要使用双引号将密码包含进来,同时外层再使用单引号进行转移,具体例子如下:
./disql SYSDBA/'"abcd@efgh"'@localhost
2.windows下,需要使用双引号将密码包含进来,同时对双引号使用\进行转移,具体例子如下:
disql SYSDBA/\"abcd@efgh\"@localhost
3.disql切换登录
- login和logout
- login登录主库
直接输入 LOGIN 命令后,屏幕会提示输入登录信息。
2.LOGOUT从登录主库注销对话
LOGOUT 命令从登录主库注销会话。断开连接而不退出 DIsql。
2.conn[ect]/disconn[ect]
1.CONN[ECT] 连接(使用 CONN[ECT] 命令建立新会话时,会自动断开先前会话 。)
与login大致相同,不同之处在于conn后可直接加<username>[/<password>][*<MPP_TYPE>] [@<server>],或者跟<username>,然后 按 照 DIsql 提示输入<password>来连接。
CONN[ECT] <logon>
<logon>::={<username>[/<password>][*<MPP_TYPE>][@<connect_identifier>]}|
{/AS <SYSDBA|SYSSSO|SYSAUDITOR|AUTO>}:使用不同的管理员账号进行本地登录,指定 AUTO 会进行自动匹配相应的管理员。
<connect_identifier>::=[<server>][:<port>][?{UDP|TCP|IPC|RDMA}][#<sslpath>][@<sslpwd>]
<password>:密码。如果密码中有特殊字符,需要特别处理。
文中语法符号规定:
<> 内的内容是必选项;
[] 内的内容是可选项;
{} 内的内容可以出现一次或多次
| 为或者;
::= 为定义符。后文语法用法与此相同
更多达梦相关材料可以参考达梦数据库官方适配中心https://eco.dameng.com/