当前位置:首页 > SYBASE-IQ知识整理-12.7 - 图文
SET OPTION \
3.4 设置并发查询
-iqgovern 命令行选项允许控制服务器上的并发查询数。这与连接数不同,连接数是由许可证控制的。
-iqgovern 开关可以优化缓冲区数据到磁盘的分页,以便最有效地使用内存。-iqgovern 的缺省值是 (2 x CPU 数) + 4。
该选项主要是用于cpu在超频使用的时候。
4 Sybase IQ 数据加载
4.1 数据加载语法
LOAD [ INTO ] TABLE [ owner.]table-name [ ( column-name, . . . ) ] FROM filename
[ load-option . . . ]
[ statistics-limitation-options ] load-option :
CHECK CONSTRAINTS { ON | OFF } | COMPUTES { ON | OFF } | DEFAULTS { ON | OFF } | DELIMITED BY string
| ESCAPE CHARACTER character | ESCAPES { ON | OFF } | FORMAT { ASCII | BCP } | HEXADECIMAL {ON | OFF} | ORDER {ON | OFF}
| PCTFREE percent-free-space | QUOTES { ON | OFF } | SKIP integer
| STRIP { ON | OFF }
| WITH CHECKPOINT { ON | OFF }
? 如果字段名未出现在字段列表中,则填充NULL、0、空、或者DEFAULT; ? 存在于输入文件中的字段可以用“filler()”.忽略
? DEFAULTS { ON | OFF } 为ON则字段取缺省值。否则取NULL ? QUOTES { ON | OFF } 缺省为ON ,字段定界符为‘’或者 “”
? DELIMITED BY 选项: 可以单个字符,最多255个字符,例如:制表符号作分割符
号:...DELIMITED BY ’nx09’
? SKIP n 忽略前n条记录;
? STRIP ON|OFF 尾空格插入前是否截取; ? WITH CHECKPOINT ON|OFF 缺省为 OFF, 如果设置为ON则,命令完成后,执行CHECKPOINT
操作。
4.2 从定长的文本文件装载数据是装载数据的最快方式
尽量使用并行装载功能:
通过在LOAD TABLE命令中使用 ROW DELIMITED BY 选项,这时, 最后一个字段也必须有分隔符
col1 | col2 | col3 | \\n
单文本装载示例:
LOAD TABLE books(fieldname,fieldname2,?) From ‘/opt/data/books.dat'
DELIMITED BY '| ’ QUOTES OFF ESCAPES OFF WITH CHECKPOINT ON;
多文本装载示例:
LOAD TABLE books(fieldname,fieldname2,?) From ‘/opt/data/books.dat’,‘/opt/data/books2.dat’ ON FILE ERROR FINISH
DELIMITED BY '| ’ QUOTES OFF ESCAPES OFF WITH CHECKPOINT ON;
4.3 使用LOAD TABLE装载文本文件注意事项
? ? ? ? ? ?
当文本文件使用分隔符时,尽量使用Row Delimited By选项以便使用并行数据装载 当数据源有多个文件时,将装载任务作为一个事务进行处理 将数据文件放在和数据库数据空间不同的物理磁盘上 在装载数据后创建所有的IQ索引,可以取得较好的性能
设置专门用于装载的缓存:配置Load_Memory_MB 数据库选项指定装载缓存大小 为HG索引提供适当临时cache(通过增加临时高速缓存的方式)
4.4 使用LOAD TABLE如何装载bcp导出的数据文件
从Sybase IQ 12.7 ESD #2开始,LOAD TABLE命令支持bcp out -c 导出的数据文件格式,同时也支持使用-t和-r定制列分隔符和行结束符。下面是一个例子(使用bcp缺省的列分隔符): --使用bcp从ase导出数据
bcp mydb..bcptable out /tmp/bcp.out -Usa -Psybase -c --使用load table导入bcp文件
load table bcptable(id ,name ,age ) from '/tmp/bcp.out' format bcp escapes off 下面是另一个例子(使用bcp -t定制列分隔符): --使用bcp从ase导出数据
bcp mydb..bcptable out /tmp/bcp.out -Usa -Psybase -t\--使用load table导入bcp文件 load table bcptable( id, name, age)
from '/tmp/bcp.out' format bcp delimited by '|!'
row delimited by '\\n' escapes off quotes off;
在使用这种方法时需要注意:
(1) load table命令中不要在装载列表中指定列分割符
4.5 数据装载时候遇到不能装载也不报错的问题
使用相同的load table语句和数据文件,分别用isql和dbisql执行。dbisql能够正常装载数据,但是使用isql却不能:在执行时并不报语法错,但是数据不能装载。查看iqmsg文件,发现有如下信息:
Partial input record (nnnn) skipped at EOF (O/S 0). 0 rows read. 解决办法是:在执行load table语句之前,执行如下语句: set temporary option ESCAPE_CHARACTER='ON' ; 然后再执行load table语句。
4.6 LOAD TABLE 如何进行错误处理
有时我们需要知道LOAD TABLE语句在装载数据文件时是否执行正常,有没有发生错误。比如,唯一约束是否违背、数据文件中字段数据类型是否匹配等。下面以一个例子来说明LOAD TABLE的错误处理: LOAD TABLE service (
service_key '|!' ,
call_waiting_flag '|!' , caller_id_flag '|!' , voice_mail_flag '|!' , cellular_flag '|!' , internet_flag '|!' ,
isdn_flag '|!' )
FROM '/sybiq/import/service.dat' ESCAPES OFF QUOTES OFF NOTIFY 1000000
ROW DELIMITED BY '\\x0a'
ignore constraint unique 0,data value 0,all 0 --0表示忽略这种类型的所有错误, n>0表示当发生n+1次时装载停止
Message Log '/sybiq/import/service_msg.log' --指定错误信息输出日志文件 Row Log '/sybiq/import/service_row.log' --指定错误数据写入的文件 Only log Unique, Data Value Log Delimited By '|!'
WITH CHECKPOINT ON; COMMIT;
上面的load语句时,如果遇到违反约束的情况,会把相应的错误信息写入service_msg.log,出错的记录写入service_row.log文件中。
4.7 Loadtable 其他一些问题处理 4.7.1 数据库升级后load错误
用户的一个系统从IQ 12.7升级到IQ 15时,原先正常的LOAD操作在15下报\truncation of string data \错后操作失败。
原因是数据库选项\在12.7的缺省值为'OFF',而在IQ 15中变为了'ON'。下面是对于这个数据库选项的解释(摘自IQ 12.7参考手册) STRING_RTRUNCATION 数据库选项:
Determines whether an error is raised when an LOAD、INSERT or UPDATE truncates a CHAR or VARCHAR string.
When STRING_TRUNCATION is OFF, the
exception is not raised and the character string is silently truncated. If the option is ON and an error is raised, a ROLLBACK occurs.
可以使用如下查询获得这个数据库选项在12.7和15中的缺省设置: select * from sysoptiondefaults where option_name like '%STRING_R%' 使用下面的查询可以看到这个数据库选项在12.7和15中的当前设置: select * from sysoptions where \
解决这个问题的方法就是在IQ 15中使用如下命令把STRING_RTRUNCATION设为OFF: set option public.STRING_RTRUNCATION='OFF'
共分享92篇相关文档