点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
请帮助我以二进制模式加载空间数据。
IQ 15.4
Linux RHEL 6
我想将IQ表迁移到另一台IQ服务器。
两个IQ均在RHEL 6上运行15.4。
我使用
设置临时选项temp_extract_binary ='ON'导出了在varchar列中具有空格的表
然后,使用"加载表...带空字节的二进制文件"导入导出的文件。
加载后,我发现源表中的空格变为空字符串(0x00000 ...)。
我怎么了?
请看我做了什么。
(对不起,我是ASE员工,这是isql中的Transact-SQL)
1>创建表sp(varchar(7)为null)
2>进行
/*插入不同长度的空格*/
1>插入sp值(space(1))
2>插入sp值(space(2))
3>插入sp值(space(3))
4>插入sp值 (space(4))
5>插入sp值(space(5))
6>插入sp值(space(6))
7>插入sp值(space(7))
8>插入sp值(空)
9>继续
/*确保每行的数据长度*/
1>从sp
2>中选择datalength(a)go
datalength(sp.a)
----- -----------
1
2
3
4
5
6
7
NULL
(受影响的8行)
/*以二进制模式导出表的内容*/
1>设置临时选项temp_extract_name1 ='sp.txt'
2>设置临时选项temp_extract_binary ='ON'
3>转到
1> select * from sp
2>转到< br> a
---------------------
(受影响的0行)
1>退出
-bash-3.00 $ isql -UDBA -Psql -Siqdb
/*清空目标表*/
1>删除sp
2>继续
/*使用空字节加载表二进制*/
1>加载表sp
2>(具有空字节的二进制文件)
3>来自'sp.txt'
4>格式二进制文件
5>引用了
6> 逃脱;
7>转到
(受影响的8行)
/*加载后,数据长度为0。发生了什么? */
1>从sp
2选择datalength(a)go
datalength(sp.a)
----------------
0
0
0
0
0
0
0
空
(受影响的8行)
/*空格更改为NULL字符串(0x000000 ...)*/
1>从sp
2>选择convert(binary(7),a)go
a
----------------
0x00000000000000
0x00000000000000
0x00000000000000
0x00000000000000
0x00000000000000
0x00000000000000
0x00000000000000
NULL
(受影响的8行)
1>
如何用二进制模式导出/导入空格?
我要用ASCII格式吗?
关于
大谷一夫
你好
我回答了自己的问题。
我在IQ 16.0的
"参考:构件块,表和过程"中找到了描述
5.1.4 VARCHAR数据和尾随空白
使用INSERT,UPDATE或LOAD TABLE插入的数据可以是:
-用引号引起来
-不用引号引起来
-二进制
对于LOAD语句,可以使用STRIP RTRIM/OFF LOAD选项指定是否修剪尾随空白。 STRIP RTRIM/OFF选项仅适用于可变长度的非二进制数据。
对于二进制数据,尾随空白始终被修剪。 <-*****
"总是修剪尾随空白。"
这意味着如果数据仅是空白,则将其修剪并变为空字符串。
我的问题:二进制加载将空格变为空字符串
->事实证明这是一种规范,是一种预期的行为。
大谷一夫
嗨,
我刚刚在Google搜索后遇到此页面,因为我也遇到了同样的问题。
解决这个问题的方法是使用插入位置。 不会为此修剪任何空格或尾随空格。
此致
Asif。
一周热门 更多>