云服务器内容精选

  • URI URI格式 GET /v3/{project_id}/storage-type/{database_name}?version_name={version_name}&ha_mode={ha_mode} 参数说明 表1 参数说明 名称 是否必选 说明 project_id 是 租户在某一Region下的项目ID。 获取方法请参见获取项目ID。 database_name 是 数据库引擎名。支持如下数据库引擎,不区分大小写: MySQL PostgreSQL SQLServer version_name 是 数据库引擎版本号,获取方法请参见查询数据库引擎的版本。 对于MySQL引擎,需转化为其大版本号,例如5.6、5.7、8.0。 ha_mode 否 主备模式,取值如下: single:单机模式。 ha:主备模式。 replica:只读模式。
  • 响应消息 正常响应要素说明 表3 要素说明 参数 参数类型 描述 job_id String 任务ID。 restart_required Boolean 实例是否需要重启。 true:需要重启。 false:不需要重启。 正常响应样例 { "job_id" : "e7a7535b-eb9b-45ac-a83a-020dc5016d94", "restart_required" : false } 异常响应 请参见异常请求结果。
  • 接口约束 支持的数据库引擎:MySQL、PostgreSQL、Microsoft SQL Server。 修改的参数必须在指定数据库版本的默认参数范围内,具体可配置范围请参见《云数据库RDS用户指南》中“修改RDS for MySQ L实例 参数”的内容。 修改的参数必须在指定数据库版本的默认参数范围内。 敏感参数,例如:“lower_case_table_names”,修改存在风险,详情请参见《云数据库RDS用户指南》中“RDS for MySQL参数调优建议”的内容。
  • 请求示例 修改MySQL实例的参数值。 PUT https://{endpoint}/v3.1/0483b6b16e954cb88930a360d2c4e663/instances/dsfae23fsfdsae3435in01/configurations { "values" : { "div_precision_increment": "6", "connect_timeout": "20", "binlog_checksum" : "CRC32", "innodb_purge_threads" : "4" } } 修改PostgreSQL实例的参数值。 { "values" : { "autovacuum" : "on", "bytea_output" : "escape", "client_encoding" : "UTF8", "cpu_tuple_cost" : "0.01" } } 修改SQL Server实例的参数值。 { "values":{ "max server memory (MB)":"26317", "max degree of parallelism":"4" } }
  • 接收状态报告 需要引入的maven依赖为:org.springframework:spring-web:5.3.21(样例版本) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class DemoController { /** * 同步短信回执 */ @PostMapping("/report") public void smsHwReport(@RequestParam String smsMsgId, // 发送短信成功时返回的短信唯一标识。 @RequestParam(required = false) String total, // 长短信拆分后的短信条数。当短信未拆分时该参数取值为1。 @RequestParam(required = false) String sequence, // 长短信拆分后的短信序号,当total参数取值大于1时,该参数才有效。当短信未拆分时该参数取值为1。 @RequestParam String status, // 短信状态报告枚举值,常见取值请参考“API参考” @RequestParam(required = false) String source, // 短信状态报告来源:1:短信平台自行产生的状态报告。2:短信中心返回的状态报告。3:华为平台产生的状态报告。 @RequestParam(required = false) String updateTime,// 短信资源的更新时间,通常为短信平台接收短信状态报告的时间,为UTC时间,格式为:yyyy-MM-dd'T'HH:mm:ss'Z',该时间会通过urlencode转义为%3a。// 当短信平台未收到短信中心上报的状态报告时,会自行构造状态报告,该状态报告中不携带“updateTime”参数。 @RequestParam(required = false) String orgCode, // 透传南向网元状态码,仅国际/港澳台短信状态报告携带,国内短信不涉及。// 当南向网元未返回状态码时不携带该参数。 @RequestParam(required = false) String extend, // 扩展字段,由用户在发送短信的请求中携带。若用户发送短信时未携带extend参数,则状态报告中也不会携带extend参数。 @RequestParam(required = false) String to) { // 本条状态报告对应的短信的接收方号码,仅当状态报告中携带了extend参数时才会同时携带该参数。 System.out.println(" ================receive smsStatusReport ======================"); System.out.println("smsMsgId: " + smsMsgId); System.out.println("total: " + total); System.out.println("sequence: " + sequence); System.out.println("status: " + status); System.out.println("source: " + source); System.out.println("updateTime: " + updateTime); System.out.println("orgCode: " + orgCode); System.out.println("extend: " + extend); System.out.println("to: " + to); } }
  • 接收上行短信 需要引入的maven依赖为:org.springframework:spring-web:5.3.21(样例版本) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.PostMapping; @RestController public class DemoController { /* * @param smsMsgId 上行短信的唯一标识。 * @param from 上行短信发送方的号码。 * @param to 上行短信接收方的号码。 * @param body 上行短信发送的内容。 * @param createTime // 上行短信创建时间,即短信平台接收到用户发送的上行短信的时间(采用标准UTC格式,例如:2018-02-12T15:30:20Z。不同编程语言中的时间格式转换方式不同,部分语言可参考表 不同编程语言的时间格式)。 * // 在控制台创建应用时配置需要“接收上行短信回复时间”后,平台才会在Body中附带此字段,该字段只对http协议的短信生效。 */ @PostMapping("/up SMS ") public void receiveHwSms(@RequestParam String smsMsgId, @RequestParam String from, @RequestParam String to, @RequestParam String body, @RequestParam(required = false) String createTime) { System.out.println(" ================receive upSMS ======================"); // 打印上面的RequestParam System.out.println(" smsMsgId: " + smsMsgId); System.out.println(" from: " + from); System.out.println(" to: " + to); System.out.println(" body: " + body); System.out.println(" createTime: " + createTime); } }
  • 接口介绍 高级功能包DBE_UTILITY支持的所有接口请参见表1。 表1 DBE_UTILITY 接口名称 描述 DBE_UTILITY.FORMAT_ERROR_BACKTRACE 输出存储过程异常的调用堆栈。 DBE_UTILITY.FORMAT_ERROR_STACK 输出存储过程异常的具体信息。 DBE_UTILITY.FORMAT_CALL_STACK 输出存储过程的调用堆栈。 DBE_UTILITY.GET_TIME 输出当前时间,一般用于做差得到执行时长。 DBE_UTILITY.CANONICALIZE 用于给表名字符串做规范。 DBE_UTILITY.COMMA_TO_TABLE 将用逗号隔开的名字列表的字符串转换为PL/SQL表名列表。 DBE_UTILITY.DB_VERSION 返回数据库的版本号和兼容性版本号。 DBE_UTILITY.EXEC_DDL_STATEMENT 用于执行用户输入的DDL语句。 DBE_UTILITY.EXPAND_SQL_TEXT_PROC 用于展开SQL查询的视图。 DBE_UTILITY.GET_CPU_TIME 返回当前CPU处理时间的测量值。 DBE_UTILITY.GET_ENDIANNESS 用于获取数据库所在平台字节序的大小端信息。 DBE_UTILITY.GET_HASH_VALUE 返回一个给定字符串的哈希值。 DBE_UTILITY.GET_SQL_HASH 输出一个给定字符串的哈希值,该存储过程在不打开proc_outparam_override时使用。 DBE_UTILITY.IS_BIT_SET 用于检查参数n是否存在于r。 DBE_UTILITY.IS_CLUSTER_DATABASE 用于判断当前数据库是否在数据库集群模式下运行。 DBE_UTILITY.NAME_RESOLVE 解析给定的对象名称,包括同义词翻译和必要的授权检查。 DBE_UTILITY.NAME_TOKENIZE 用于解析a [. b [. c ]][@ dblink ]形式的名字。 DBE_UTILITY.OLD_CURRENT_SCHEMA 返回当前用户环境下的数据库模式名称。 DBE_UTILITY.OLD_CURRENT_USER 返回当前用户的名称。 DBE_UTILITY.TABLE_TO_COMMA 将PL/SQL中的表名转换为用逗号隔开的名字列表的字符串。 DBE_UTILITY.GET_SQL_HASH_FUNC 功能同DBE_UTILITY.GET_SQL_HASH,该函数在打开proc_outparam_override时使用。 DBE_UTILITY.EXPAND_SQL_TEXT 内部函数,不建议用户使用。 DBE_UTILITY.CANONICALIZE_RET 内部函数,不建议用户使用。 DBE_UTILITY.COMMA_TO_TABLE_FUN 内部函数,不建议用户使用。 DBE_UTILITY.COMPILE_SCH.... 内部函数,不建议用户使用,推荐使用pkg_util.gs_compile_schema。 DBE_UTILITY.NAME_SEPARATE 内部函数,不建议用户使用。 DBE_UTILITY.NAME_TOKENIZE_FUNC 内部函数,不建议用户使用。 DBE_UTILITY.NAME_TOKENIZE_LOWER 内部函数,不建议用户使用。 DBE_UTILITY.NAME_TOKENIZE_LOWER_FUNC 内部函数,不建议用户使用。 DBE_UTILITY.PRIVILEGE_CHECK 内部函数,不建议用户使用。 DBE_UTILITY.SEARCH_CLASS_WITH_NSPOID_ONAME_TYPE 内部函数,不建议用户使用。 DBE_UTILITY.SEARCH_OBJE CTS 内部函数,不建议用户使用。 DBE_UTILITY.SEARCH_OBJECTS_SYNONYM_FILL_SECHEMA 内部函数,不建议用户使用。 DBE_UTILITY.SEARCH_PROCEDURE_WITH_NSPOID_ONAME 内部函数,不建议用户使用。 DBE_UTILITY.SEARCH_SYNONM_WITH_NSPOID_ONAME 内部函数,不建议用户使用。 DBE_UTILITY.TABLE_TO_COMMA_FUNC 内部函数,不建议用户使用。 DBE_UTILITY.USER_NAME 内部函数,不建议用户使用。 DBE_UTILITY.FORMAT_ERROR_BACKTRACE 存储过程FORMAT_ERROR_BACKTRACE返回在执行过程中出现错误时,出现错误位置的调用堆栈。DBE_UTILITY.FORMAT_ERROR_BACKTRACE函数原型为: 1 2 DBE_UTILITY.FORMAT_ERROR_BACKTRACE() RETURN TEXT; DBE_UTILITY.FORMAT_ERROR_STACK 存储过程FORMAT_ERROR_STACK返回在执行过程中出现错误时,出现错误位置的具体信息。DBE_UTILITY.FORMAT_ERROR_STACK函数原型为: 1 2 DBE_UTILITY.FORMAT_ERROR_STACK() RETURN TEXT; DBE_UTILITY.FORMAT_CALL_STACK 存储过程FORMAT_CALL_STACK设置输出函数调用堆栈。DBE_UTILITY.FORMAT_CALL_STACK函数原型为: 1 2 DBE_UTILITY.FORMAT_CALL_STACK() RETURN TEXT; DBE_UTILITY.COMPILE_SCHEMA 重编译指定schema下的PL/SQL类型包和函数(系统自带的包和函数除外), DBE_UTILITY.COMPILE_SCHEMA函数原型为: DBE_UTILITY.COMPILE_SCHEMA ( SCHEMA IN VARCHAR2, COMPILE_ALL IN BOOLEAN DEFAULT TRUE, REUSE_SETTINGS IN BOOLEAN DEFAULT FALSE ) RETURNS VOID; 示例参考11.12.1.2中pkg_util.utility_compile_schema函数使用方式, 调用处改为: call DBE_UTILITY.compile_schema('pkg_var_test'); DBE_UTILITY.GET_TIME 存储过程GET_TIME设置输出时间,通常用于做差,单独的返回值没有意义。DBE_UTILITY.GET_TIME函数原型为: 1 2 DBE_UTILITY.GET_TIME() RETURN BIGINT;
  • 内置保留字段 在采集日志时, 云日志 服务会将采集时间、日志类型、主机IP等信息以Key-Value对的形式添加到日志中,这些字段是云日志服务的内置字段。 使用API写入日志数据或添加ICAgent配置时,请不要将字段名称设置为内置保留字段,否则可能会造成字段名称重复、查询不精确等问题。 日志服务为日志数据增加的内置保留字段当前免费,后续会按照按量付费方式正常收费(为其开启索引时也会产生少量索引流量及存储费用)。更多信息请参见价格计算器。 用户自定义日志字段名称中不能使用双下划线__,否则无法配置索引。 表4 内置保留字段说明 内置保留字段 数据格式 索引与统计设置 说明 collectTime 整型,Unix时间戳(毫秒) 索引设置:开启索引后,日志服务默认为collectTime创建字段索引,索引数据类型为long类型。 查询时输入collectTime : xxx。 采集时间,指日志被采集器ICAgent采集时的时间。 例如示例中的"collectTime":"1681896081334",转换成标准时间是2023-04-19 17:21:21 __time__ 整型,Unix时间戳(毫秒) 索引设置:开启索引后,日志服务默认为time创建字段索引,索引数据类型为long类型。该字段不支持查询。 日志时间,指的是日志在控制台页面展示的日志时间。 例如示例中的"__time__":"1681896081334",转换成标准时间是2023-04-19 17:21:21 日志时间默认使用采集时间,也支持自定义日志时间。 lineNum 整型 索引设置:开启索引后,日志服务默认为lineNum创建字段索引,索引数据类型为long类型。 行号(偏移量),用来排序日志。 非高精度日志会根据collectTime生成,默认是collectTime * 1000000 + 1,高精度日志就是用户上报的纳秒值。 例如示例中的"lineNum":"1681896081333991900"。 category 字符串 索引设置:开启索引后,日志服务默认为category创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入category: xxx。 日志类型,表示该日志的来源。 例如ICAgent采集的日志该字段为LTS,某云服务例如D CS 上报的日志该字段为DCS。 clusterName 字符串 索引设置:开启索引后,日志服务默认为clusterName创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入clusterName: xxx。 集群名称,k8s场景下集群名称。 例如示例中的"clusterName":"epstest"。 clusterId 字符串 索引设置:开启索引后,日志服务默认为clusterId创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入clusterId: xxx。 集群ID,k8s场景下集群ID。例如示例中的"clusterId":"c7f3f4a5-xxxx-11ed-a4ec-0255ac100b07"。 nameSpace 字符串 索引设置:开启索引后,日志服务默认为nameSpace创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入nameSpace: xxx。 命名空间,k8s场景下命名空间。 例如示例中的"nameSpace":"monitoring"。 appName 字符串 索引设置:开启索引后,日志服务默认为appName创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入appName: xxx。 组件名称,k8s场景下工作负载的名称。 例如示例中的"appName":"alertmanager-alertmanager"。 serviceID 字符串 索引设置:开启索引后,日志服务默认为serviceID创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入serviceID: xxx。 工作负载ID,k8s场景下工作负载ID。 例如示例中的"serviceID":"cf5b453xxxad61d4c483b50da3fad5ad"。 podName 字符串 索引设置:开启索引后,日志服务默认为podName创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入podName: xxx。 POD名称,k8s场景下POD名称。 例如示例中的"podName":"alertmanager-alertmanager-0"。 podIp 字符串 索引设置:开启索引后,日志服务默认为podIp创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入podIp: xxx。 pod的ip,k8s场景下pod的IP地址。 例如示例中的"podIp":"10.0.0.145"。 containerName 字符串 索引设置:开启索引后,日志服务默认为containerName创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入containerName: xxx。 容器名称,k8s场景下容器名称。 例如示例中的"containerName":"config-reloader"。 hostName 字符串 索引设置:开启索引后,日志服务默认为hostName创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入hostName: xxx。 主机名称,ICAgent所在主机的名称。 例如示例中的"hostName":"epstest-xx518"。 hostId 字符串 索引设置:开启索引后,日志服务默认为hostId创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入hostId: xxx。 主机ID,ICAgent所在主机的id,该id由ICAgent生成。例如示例中的"hostId":"318c02fe-xxxx-4c91-b5bb-6923513b6c34"。 hostIP 字符串 索引设置:开启索引后,日志服务默认为hostIP创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入hostIP: xxx。 主机IP,日志采集器所在主机的ip(适用于ipv4场景) 例如示例中的"hostIP":"192.168.0.31"。 hostIPv6 字符串 索引设置:开启索引后,日志服务默认为hostIPv6创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入hostIPv6: xxx。 主机IP,日志采集器所在主机的ip(适用于ipv6场景) 例如示例中的"hostIPv6":""。 pathFile 字符串 索引设置:开启索引后,日志服务默认为pathFile创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入pathFile: xxx。 文件路径,采集的日志文件的路径。 例如示例中的"pathFile":"stdout.log"。 content 字符串 索引设置:开启全文索引后,会使用全文索引定义的分词符对content字段的value进行分词;不支持将content字段配置到字段索引中。 日志原文, 例如示例中的"content":"level=error ts=2023-04-19T09:21:21.333895559Z" __receive_time__ 整型,Unix时间戳(毫秒) 索引设置:开启索引后,日志服务默认为__receive_time__创建字段索引,索引数据类型为long类型。 上报日志的服务端时间,相当于LTS采集端接收到日志的时间。 __client_time__ 整型,Unix时间戳(毫秒) 索引设置:开启索引后,日志服务默认为__client_time__创建字段索引,索引数据类型为long类型。 端侧日志的客户端上报时间。 _content_parse_fail_ 字符串 索引设置:开启索引后,日志服务默认为_content_parse_fail_创建字段索引,索引数据类型为string类型,分词字符为默认分词符。查询时输入_content_parse_fail_: xxx。 上报日志解析失败的日志内容。 __time 整型,Unix时间戳(毫秒) 不支持将__time字段配置到字段索引中。 不涉及。 logContent 字符串 不支持将logContent字段配置到字段索引中。 不涉及。 logContentSize 整型 不支持将logContentSize字段配置到字段索引中。 不涉及。 logIndexSize 整型 不支持将logIndexSize字段配置到字段索引中。 不涉及。 groupName 字符串 不支持将groupName字段配置到字段索引中。 不涉及。 logStream 字符串 不支持将logStream字段配置到字段索引中。 不涉及。
  • 配置字段索引 创建字段索引时,最多支持添加500个字段。其中JSON类型字段,最多支持添加100个子字段。 配置全文索引后,在索引配置页面的 日志分析 下方,单击开启可视化后,配置的字段索引支持SQL可视化分析,否则无法查询到ICAgent结构化的可视化数据。 设置快速分析采样条数,默认值10万条,最小值为10万条,最大值1000万条。通过采样快速统计字段值取值分布,并非对全量数据进行分析,采样条数越多分析数据越慢。 在索引配置页面的字段索引下方,单击“添加字段”,配置字段索引。具体的参数配置请参考表5 自定义字段索引配置参数。 字段索引的参数配置仅对该字段生效。 当添加的字段在日志内容中不存在时,则配置的该索引字段无效。 更多内置字段请参考内置保留字段。 自动配置字段索引:单击“自动配置”,云日志服务会根据采集时预览数据中的第一条内容或常见内置保留字段(例如hostIP、hostName、pathFile)自动生成字段索引,您可以根据自己的需要增加或者删除字段。 批量配置字段索引:批量勾选字段,单击“批量配置”,进行批量配置字段索引。 表3 自定义字段索引配置参数 参数 说明 字段名称 日志字段名称,例如示例日志中的level。 字段名称只能包括字母、数字或下划线(_),且只能以字母或下划线(_)开头,字段名称中不能含有双下划线。 说明: 双下划线(__)在LTS不对用户呈现的内置保留字段中使用,用户自定义日志字段名中不能使用双下划线__,否则无法配置字段索引名称。 日志服务默认会对部分内置保留字段开启字段索引,请参见内置保留字段。 若是内置字段,在字段名称后会显示“内置”字眼,方便用户识别。 执行操作 显示字段的添加状态:新增、不修改、修改、删除。索引字段有变动后,单击“修改对比”,即可查看原配置内容与修改后配置内容的差异。 显示新增的字段不支持修改执行操作。 修改类型、大小写敏感、自定义分词符、特殊分词符、包含中文、快速分析时,会与原索引配置中的字段进行对比,若任意一项不同,则执行操作变为“修改”。 索引配置单击确定后,不会保存执行操作为“删除”的字段。 类型 日志字段值(Value)的数据类型,可选值为string、long、float、json。 说明: 字段json类型只对ICAgent结构化解析生效,对云端结构化解析不生效。 long类型和float类型不支持设置大小写敏感、包含中文和分词符。 大小写敏感 查询时是否区分英文字母的大小写。 打开大小写敏感开关,则查询时区分大小写。例如示例日志message字段中含有Know,那么您只能使用message:Know才能查询到该日志。 关闭大小写敏感开关,则查询时不区分大小写。例如示例日志message字段中含有Know,那么您使用关键字message:KNOW和message:know都能查到该日志。 自定义分词符 根据指定分词符,将日志内容拆分成多个词。当默认设置不能满足您的需求时,您可以自定义设置分词符。所有的ASCII码包括中文都可被定义为分词符。 如果设置分词符为空,则字段值将被当成一个整体,您只能通过完整字符串或模糊查询查找对应的日志。 例如示例日志message字段内容为:I Know 今天是星期一。 如果不设置任何分词符,整条日志被作为一个词I Know 今天是星期一,您只能通过完整字符串message:I Know 今天是星期一或模糊查询message:I Know 今天是*查找该日志。 如果设置分词符为空格,则原始日志被拆分为I、Know、今天是星期一3个词,您通过任意一个词或词的模糊查询都可以找到该日志,例如message:Know或message:今天是星期一。 特殊分词符 单击“添加特殊分词符”,参考ASCII码对照表输入ASCII值。 包含中文 查询时是否区分中英文。 打开包含中文开关后,如果日志中包含中文,默认按照一元分词法拆分中文内容,按照分词符的设置拆分英文内容。 说明: 一元分词是指将中文字符串拆分为单个独立的中文字。 使用一元分词符的优点是对海量日志分词效率高,其他中文分词方法对写入速度影响大。 打开包含中文功能,会对中文使用一元分词(每个汉字单独分词),如果需要更精确的搜索结果,请用短语搜索,语法为:#"待搜索的短语"。 关闭包含中文开关后,按照分词符的设置拆分所有内容。 例如示例日志message字段内容为:I Know 今天是星期一。 关闭包含中文开关后,按照分词符的设置拆分英文内容,日志会被拆分为I、Know、今天是星期一,您可以通过message:Know或message:今天是星期一查找该日志。 打开包含中文开关后,日志服务后台分词器将日志拆分为I、Know、今、天、是、星、期、一,您通过message:Know或message:今天等词都可以查找到该日志。 快速分析 默认为开启状态,开启后,可以对字段值做采样统计,请参见11.6.4-快速分析。 说明: 快速分析的原理是对搜索命中的日志采样10万条进行数据统计,不是全量统计。 快速分析的字段长度最大为2000字节。 快速分析字段展示前100条数据。 操作 单击,删除添加的自定义字段。 图1 批量配置 完成后,单击“确定”。
  • 配置全文索引 登录云日志服务控制台,进入“日志管理”页面。 单击目标日志组和日志流名称。 在日志流详情页面,单击右上角,在弹出页面中,选择“索引配置”,进入索引配置页面。 在索引配置页面中,默认开启“全文索引”按钮,参考表3 自定义全文索引配置参数配置各参数信息。 在索引配置页面选择自动配置时,默认获取最近15分钟的原始日志和内置字段的交集,LTS自动将原始日志和内置字段的交集、当前结构化字段、tag字段一起组成字段索引下方的表格数据。 若15分钟内没有原始日志,则获取hostIP、hostName、pathFile、结构化字段、tag字段结合共同组成字段索引下方的表格数据。 ECS接入选择结构化配置时,进入索引配置页面,则会自动加上如下字段:category、 hostName、hostId、 hostIP、 hostIPv6、 pathFile,添加字段时,若某个字段已存在于索引配置,则不会重复添加。 CCE接入选择结构化配置时,进入索引配置页面,则会自动加上如下字段:category、 clusterId、 clusterName、 nameSpace、 podName、 containerName、 appName、 hostName、 hostId、 hostIP、 hostIPv6、 pathFile,添加字段时,若某个字段已存在于索引配置,则不会重复添加。 表2 自定义全文索引配置参数 参数 说明 全文索引 打开全文索引开关,表示创建全文索引。 大小写敏感 查询时是否区分英文字母的大小写。 打开大小写敏感开关,则查询时区分大小写。例如示例日志含有Know,那么您只能使用Know才能查询到该日志。 关闭大小写敏感开关,则查询时不区分大小写。例如示例日志含有Know,那么您使用关键字KNOW和know都能查到该日志。 包含中文 查询时是否区分中英文。 打开包含中文开关后,如果日志中包含中文,默认按照一元分词法拆分中文内容,按照分词符的设置拆分英文内容。 说明: 一元分词是指将中文字符串拆分为单个独立的中文字。 使用一元分词符的优点是对海量日志分词效率高,其他中文分词方法对写入速度影响大。 打开包含中文功能,会对中文使用一元分词(每个汉字单独分词),如果需要更精确的搜索结果,请用短语搜索,语法为:#"待搜索的短语"。 关闭包含中文开关后,按照分词符的设置拆分所有内容。 例如示例日志内容为: error,400,I Know 今天是星期一。 关闭包含中文开关后,按照分词符的设置拆分英文内容,日志会被拆分为error、400、I、Know、今天是星期一,您可以通过error或今天是星期一查找该日志。 打开包含中文开关后,日志服务后台分词器将日志拆分为error、400、I、Know、今、天、是、星、期、一,您通过error或今天等词都可以查找到该日志。 分词符 根据指定分词符,将日志内容拆分成多个词。当默认设置不能满足您的需求时,您可以自定义设置分词符。所有的ASCII码包括中文都可被定义为分词符。 如果设置分词符为空,则字段值将被当成一个整体,您只能通过完整字符串或模糊查询查找对应的日志。 单击“预览”,查看分词预览效果。 例如示例日志内容为: error,400,I Know 今天是星期一。 如果不设置任何分词符,整条日志被作为一个词error,400,I Know 今天是星期一,您只能通过完整字符串error,400,I Know 今天是星期一或模糊查询error,400,I K*查找该日志。 如果设置分词符为逗号(,),则原始日志被拆分为error、400、I Know 今天是星期一3个词,您通过任意一个词或词的模糊查询都可以找到该日志,例如error、400、I Kn*、今天是*。 如果设置分词符为逗号(,)和空格,则原始日志被拆分为error、400、I、Know、今天是星期一5个词,您通过任意一个词或词的模糊查询都可以找到该日志,例如Know、今天是*。 特殊分词符 单击“添加特殊分词符”,参考ASCII码对照表输入ASCII值。 完成后,单击“确定”。
  • 注意事项 全文索引属性和字段索引属性必须至少启用一种。 创建索引会产生索引流量和索引存储空间,费用说明请参见价格计算器。 关闭索引后,历史索引的存储空间将在当前日志流的数据保存时间到期后,自动被清除。 云日志服务默认已为部分内置保留字段创建字段索引,请参见内置保留字段。 不同的索引配置,会产生不同的查询和分析结果,请根据您的需求,合理创建索引。全文索引和字段索引互不影响。 索引配置修改后,对新写入的日志数据生效,历史日志数据不会生效。 在字段索引功能上线前,SQL分析支持的字段来自于云端结构化解析;在字段索引功能上线后,只要用户配置了字段索引,SQL分析支持的字段将来自于字段索引,因此修改字段索引可能对现有的可视化图表、仪表盘、SQL告警、定时SQL、Grafana接入中的查询结果产生影响,请谨慎操作!
  • 索引类型 云日志服务LTS 支持全文索引和字段索引,详细请参考表1。 表1 索引类型 索引类型 说明 全文索引 开启全文索引后,日志服务根据您设置的分词符将整条日志所有字段值拆分成多个词并构建索引。 说明: 用户上传的自定义标签(label)字段,不包含在全文索引中,如果您需要搜索自定义标签字段,请添加对应的字段索引。 LTS内置保留字段,不包含在全文索引中,您需要通过字段索引Key:Value的方式进行搜索,请参考内置保留字段。 字段索引 配置字段索引后,您可以指定字段名称和字段值(Key:Value)进行查询,缩小查询范围。 说明: 日志服务默认为部分内置保留字段创建字段索引,请参考内置保留字段。 如果您的某个字段单独配置了字段索引,那么该字段值的分词符以字段索引配置为准。 结构化配置中的快速分析列已被移除,如果您要使用快速分析功能,则必须配置字段索引且开启对应字段的快速分析按钮。 关于日志示例有两种情况: 在日志示例中,配置了level和status两个字段索引,其中level是string类型,字段值是error,单独配置了分词符,status是long类型,不需要配置分词符;您可以使用level : error的方式精确搜索level字段值为error的所有日志。 在日志示例中,云日志服务LTS会默认为hostName、hostIP、pathFile这些内置保留字段创建字段索引。
  • 接口介绍 高级功能包DBE_FILE支持的所有接口请参见表2。 表2 DBE_FILE 接口名称 描述 DBE_FILE.OPEN 根据指定的目录和文件名打开一个文件,返回对应的文件句柄或者封装了文件句柄的DBE_FILE.FILE_TYPE类型对象。 DBE_FILE.IS_CLOSE 检测一个文件句柄是否关闭。 DBE_FILE.IS_OPEN 检测一个文件句柄是否打开。 DBE_FILE.READ_LINE 从一个打开的文件句柄中读取一行指定长度的数据。 DBE_FILE.WRITE 将数据写入到一个打开的文件的缓冲区中。 DBE_FILE.NEW_LINE 将一个或者多个行终结符写入到一个打开的文件的缓冲区中。 DBE_FILE.WRITE_LINE 将数据写入到一个打开的文件的缓冲区中,并自动追加一个行终结符。 DBE_FILE.FORMAT_WRITE 将数据按指定格式写入到一个打开的文件的缓冲区中。 DBE_FILE.GET_RAW 从一个打开的文件中读取指定字节数的RAW类型数据。 DBE_FILE.PUT_RAW 将RAW类型数据写入到一个打开的文件的缓冲区中。 DBE_FILE.FLUSH 将缓存区中的数据写入到物理文件中。 DBE_FILE.CLOSE 关闭一个打开的文件句柄。 DBE_FILE.CLOSE_ALL 关闭一个会话中打开的所有的文件句柄。 DBE_FILE.REMOVE 根据指定的目录和文件名删除一个磁盘文件,操作的时候需要有充分的权限。 DBE_FILE.RENAME 重命名一个磁盘文件,类似UNIX的mv指令。 DBE_FILE.COPY 复制一个连续的区域内容到一个新创建的文件中,如果忽略了start_line和end_line会复制整个文件。 DBE_FILE.GET_ATTR 读取并返回磁盘文件的属性。 DBE_FILE.SEEK 根据用户指定的字节数向前或者向后调整文件指针的位置。 DBE_FILE.GET_POS 以字节为单位返回文件当前的偏移量。 DBE_FILE.FOPEN_NCHAR 以NCHAR模式根据指定的目录和文件名打开一个文件。 DBE_FILE.WRITE_NCHAR 将NVARCHAR2类型的数据写入到一个打开的NCHAR模式文件缓冲区中。 DBE_FILE.WRITE_LINE_NCHAR 将NVARCHAR2类型的数据写入到一个打开的NCHAR模式文件缓冲区中,并自动追加一个行终结符。 DBE_FILE.FORMAT_WRITE_NCHAR 将NVARCHAR2类型的数据按指定格式写入到一个打开的NCHAR模式文件缓冲区中,允许格式化的DBE_FILE.WRITE_NCHAR接口。 DBE_FILE.READ_LINE_NCHAR 从一个打开的NCHAR模式文件中读取一行指定长度的数据。 DBE_FILE.OPEN/DBE_FILE.FOPEN 函数DBE_FILE.OPEN用来打开一个文件,可以指定文件每行的最大字节数,一个会话内最多可以同时打开50个文件。该函数返回一个INTEGER类型的文件句柄。函数DBE_FILE.FOPEN功能和DBE_FILE.OPEN类似,返回一个DBE_FILE.FILE_TYPE类型的对象。 DBE_FILE.OPEN和DBE_FILE.FOPEN函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 DBE_FILE.OPEN ( dir IN TEXT, file_name IN TEXT, open_mode IN TEXT, max_line_size IN INTEGER DEFAULT 1024) RETURN INTEGER; DBE_FILE.FOPEN( dir IN TEXT, file_name IN TEXT, open_mode IN TEXT, max_line_size IN INTEGER DEFAULT 1024) RETURN DBE_FILE.FILE_TYPE; 表3 DBE_FILE.OPEN接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dir TEXT IN 否 文件的目录位置,这个字符串是一个目录对象名。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包读写safe_data_path指定文件路径下的文件。 file_name TEXT IN 否 文件名,包含扩展(文件类型),不包括路径名。如果文件名中包含路径,在OPEN中会被忽略,在Unix系统中,文件名不能以/.结尾。 open_mode TEXT IN 否 指定文件的打开模式,包含: r:read text w:write text a:append text rb:read byte wb:write byte ab:append byte 说明: 对于写操作,则检测写入文件类型,如果为elf类型文件,则报错退出。 max_line_size INTEGER IN 是 每行的最大字节数,包含换行符(最小值是1,最大值是32767)。如果没有指定或指定该参数为空,则使用默认值1024。 DBE_FILE.IS_CLOSE 函数DBE_FILE.IS_CLOSE用于检测一个文件句柄是否已经关闭,返回布尔值,异常情况是INVALID_FILEHANDLE。 DBE_FILE.IS_CLOSE函数原型为: 1 2 3 4 5 6 7 DBE_FILE.IS_CLOSE ( file IN INTEGER) RETURN BOOLEAN; DBE_FILE.IS_CLOSE( file IN DBE_FILE.FILE_TYPE) RETURN BOOLEAN; 表4 DBE_FILE.IS_CLOSE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 是 待检测的文件句柄或DBE_FILE.FILE_TYPE类型的对象,为空时DBE_FILE.IS_CLOSE接口返回空。 DBE_FILE.IS_OPEN 函数DBE_FILE.IS_OPEN用于检测一个文件句柄是否已经打开,返回布尔值,异常情况是INVALID_FILEHANDLE。 DBE_FILE.IS_OPEN函数原型为: 1 2 3 4 5 6 7 DBE_FILE.IS_OPEN( file IN INTEGER) RETURN BOOLEAN; DBE_FILE.IS_OPEN( file IN DBE_FILE.FILE_TYPE) RETURN BOOLEAN; 表5 DBE_FILE.IS_OPEN接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 是 待检测的文件句柄或DBE_FILE.FILE_TYPE类型的对象,为空时DBE_FILE.IS_OPEN接口返回FALSE。 DBE_FILE.READ_LINE 函数DBE_FILE.READ_LINE从一个打开的文件读取数据,并把读取的结果存放到buffer中。读取的时候会读取到行尾,但不包含行终结符,或者读取到文件末尾,或者读取到len参数指定的大小。读取的长度不能超过OPEN的时候指定的max_line_size。 DBE_FILE.READ_LINE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 DBE_FILE.READ_LINE( file IN INTEGER, buffer OUT TEXT, len IN INTEGER DEFAULT NULL) RETURN TEXT; DBE_FILE.READ_LINE( file IN DBE_FILE.FILE_TYPE, buffer OUT TEXT, len IN INTEGER DEFAULT NULL) RETURN TEXT; 表6 DBE_FILE.READ_LINE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象,文件必须以读模式打开,否则会抛出INVALID_OPERATION的异常。 buffer TEXT OUT 否 接收数据的buffer。 len INTEGE IN 是 从文件中读取的字节数,默认是NULL。如果是默认NULL,会使用max_linesize来指定大小。 DBE_FILE.WRITE 函数DBE_FILE.WRITE用于向文件对应的缓冲区中写入buffer中的数据,文件必须以写模式打开,这个操作不会写入行终结符。 DBE_FILE.WRITE函数原型为: 1 2 3 4 5 6 7 8 9 DBE_FILE.WRITE( file IN INTEGER, buffer IN TEXT) RETURN BOOLEAN; DBE_FILE.WRITE( file IN DBE_FILE.FILE_TYPE, buffer IN TEXT) RETURN VOID; 表7 DBE_FILE.WRITE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象,要写入的文件必须以写模式打开,这个操作不会写入行终结符。 buffer TEXT IN 是 写入文件的文本数据。每行的累计写入长度不能大于或等于OPEN或FOPEN时指定或默认的max_line_size,否则会在刷新到文件时报错,该参数为空时接口会直接返回。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 DBE_FILE.NEW_LINE 函数DBE_FILE.WRITE_LINE用于向文件对应的缓冲区中写入一个或者多个行终结符,行终结符和平台相关。 DBE_FILE.NEW_LINE函数原型为: 1 2 3 4 5 6 7 8 9 DBE_FILE.NEW_LINE( file IN INTEGER, line_nums IN INTEGER DEFAULT 1) RETURN BOOLEAN; DBE_FILE.NEW_LINE( file IN DBE_FILE.FILE_TYPE, line_nums IN INTEGER DEFAULT 1) RETURN VOID; 表8 DBE_FILE.NEW_LINE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象,要写入的文件必须以写模式打开,这个操作不会写入行终结符。 line_nums INTEGER IN 是 写入到文件中的行终结符的数量,默认值为1,指定为空时不写入行终结符。 DBE_FILE.WRITE_LINE 函数DBE_FILE.WRITE_LINE用于向文件对应的缓冲区中写入buffer中的数据,文件必须以写模式打开,这个操作会自动追加行终结符。 DBE_FILE.WRITE_LINE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 DBE_FILE.WRITE_LINE( file IN INTEGER, buffer IN TEXT, flush IN BOOLEAN DEFAULT FALSE) RETURN BOOLEAN; DBE_FILE.WRITE_LINE( file IN DBE_FILE.FILE_TYPE, buffer IN TEXT, flush IN BOOLEAN DEFAULT FALSE) RETURN VOID; 表9 DBE_FILE.WRITE_LINE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 buffer TEXT IN 是 要写入文件的文本数据,每行的长度(包含换行符)不能大于OPEN或FOPEN时指定或默认的max_line_size,否则会在刷新到文件时报错。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 flush BOOLEAN IN 是 在WRITE_LINE后是否要将文件对应缓冲区中的数据刷到磁盘,默认值或者该参数为空时为FALSE。 DBE_FILE.FORMAT_WRITE 函数DBE_FILE.FORMAT_WRITE将格式化数据写入到一个打开的文件对应的缓冲区中,是允许格式化的DBE_FILE.WRITE接口。 DBE_FILE.FORMAT_WRITE函数原型为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 DBE_FILE.FORMAT_WRITE( file IN INTEGER, format IN TEXT, arg1 IN TEXT DEFAULT NULL, . . . arg6 IN TEXT DEFAULT NULL) RETURN BOOLEAN; DBE_FILE.FORMAT_WRITE( file IN DBE_FILE.FILE_TYPE, format IN TEXT, arg1 IN TEXT DEFAULT NULL, . . . arg6 IN TEXT DEFAULT NULL) RETURN VOID; 表10 DBE_FILE.FORMAT_WRITE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 format TEXT IN 是 格式化的字符串,包含文本和格式符\n和%s。若指定为空时,则不写入任何数据。 [arg1. . .arg6] TEXT IN 是 1到6个可选的参数串,参数和格式化字符的位置是一一对应的,如果存在格式化字符而没有提供参数或者参数为空,会使用空串来替代%s。 DBE_FILE.GET_RAW 函数DBE_FILE.GET_RAW从一个打开的文件读取RAW类型数据,并把读取的结果存放到buffer中,从r中返回。 DBE_FILE.GET_RAW函数原型为: 1 2 3 4 5 6 7 8 9 10 11 DBE_FILE.GET_RAW( file IN INTEGER, r OUT RAW, length IN INTEGER DEFAULT NULL) RETURN RAW; DBE_FILE.GET_RAW( file IN DBE_FILE.FILE_TYPE, r OUT RAW, length IN INTEGER DEFAULT NULL) RETURN BOOLEAN; 表11 DBE_FILE.GET_RAW接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 r RAW OUT 否 接收RAW类型数据的buffer。 length INTEGER IN 是 从文件中读取的字节数,默认值为NULL,如果是NULL,会使用RAW类型最大长度来指定大小。 DBE_FILE.PUT_RAW 函数DBE_FILE.PUT_RAW用于向文件对应的缓冲区中写入RAW类型数据。 DBE_FILE.PUT_RAW函数原型为: 1 2 3 4 5 6 7 8 9 10 11 DBE_FILE.PUT_RAW ( file IN INTEGER, r IN RAW, flush IN BOOLEAN DEFAULT FALSE) RETURN BOOLEAN; DBE_FILE.PUT_RAW ( file IN DBE_FILE.FILE_TYPE, r IN RAW, flush IN BOOLEAN DEFAULT FALSE) RETURN VOID; 表12 DBE_FILE.PUT_RAW接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 r RAW IN 否 写入文件的RAW类型数据。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 flush BOOLEAN IN 是 在PUT_RAW后是否要刷到磁盘,不指定或指定为空时采用FALSE。 DBE_FILE.FLUSH 函数DBE_FILE.FLUSH将缓冲区中的数据写入到物理文件中,缓存中的数据必须要有一个行终结符。该函数可以将缓冲区的数据及时写入到对应的物理文件中。 DBE_FILE.FLUSH函数原型为: 1 2 3 4 5 6 7 DBE_FILE.FLUSH( file IN INTEGER) RETURN VOID; DBE_FILE.FLUSH( file IN DBE_FILE.FILE_TYPE) RETURN VOID; 表13 DBE_FILE.FLUSH接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 DBE_FILE.CLOSE 函数DBE_FILE.CLOSE用于关闭一个打开的文件句柄,当调用这个函数的时候,如果还有等待写入的缓存的数据,可能会收到异常信息,正常关闭返回TRUE。 DBE_FILE.CLOSE函数原型为: 1 2 3 4 5 6 7 DBE_FILE.CLOSE( file IN INTEGER) RETURN BOOLEAN; DBE_FILE.CLOSE( file IN DBE_FILE.FILE_TYPE) RETURN BOOLEAN; 表14 DBE_FILE.CLOSE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 DBE_FILE.CLOSE_ALL 函数DBE_FILE.CLOSE_ALL关闭一个会话中打开的所有的文件句柄,可用于紧急的清理操作。 DBE_FILE.CLOSE_ALL函数原型为: 1 2 DBE_FILE.CLOSE_ALL() RETRUN VOID; DBE_FILE.REMOVE 函数DBE_FILE.REMOVE删除一个磁盘文件,使用的时候需要有充分的权限。 DBE_FILE.REMOVE函数原型为: 1 2 3 4 DBE_FILE.REMOVE( dir IN TEXT, file_name IN TEXT) RETURN VOID; 表15 DBE_FILE.REMOVE接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dir TEXT IN 否 文件所在的目录位置。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 file_name TEXT IN 否 文件名。 DBE_FILE.RENAME 函数DBE_FILE.RENAME重命名一个磁盘文件,类似UNIX的mv指令。 DBE_FILE.RENAME函数原型为: 1 2 3 4 5 6 7 DBE_FILE.RENAME( src_dir IN TEXT, src_file_name IN TEXT, dest_dir IN TEXT, dest_file_name IN TEXT, overwrite IN BOOLEAN DEFAULT FALSE) RETURN VOID; 表16 DBE_FILE.RENAME接口参数说明 参数 类型 入参/出参 是否可以为空 描述 src_dir TEXT IN 否 源文件的目录位置(大小写敏感)。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 src_file_name TEXT IN 否 要进行命名的源文件。 dest_dir TEXT IN 否 目的目录位置(大小写敏感)。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 dest_file_name TEXT IN 否 新的文件名。 overwrite BOOLEAN IN 是 是否重写,参数指定为空或者不指定时表示不重写。在不重写的情况下,如果目的目录下已存在同名文件会报错。 DBE_FILE.COPY 函数DBE_FILE.COPY复制一个连续区域的内容到一个新创建的文件中,如果忽略了start_line和end_line会复制整个文件。 DBE_FILE.COPY函数原型为: 1 2 3 4 5 6 7 8 DBE_FILE.COPY ( src_dir IN TEXT, src_file_name IN TEXT, dest_dir IN TEXT, dest_file_name IN TEXT, start_line IN INTEGER DEFAULT 1, end_line IN INTEGER DEFAULT NULL) RETURN VOID; 表17 DBE_FILE.COPY接口参数说明 参数 类型 入参/出参 是否可以为空 描述 src_dir TEXT IN 否 源文件所在的目录。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 src_file_name TEXT IN 否 要复制的源文件名。 dest_dir TEXT IN 否 目的文件所在的目录。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 dest_file_name TEXT IN 否 目的文件名。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 start_line TEXT IN 否 复制开始的行号,默认是1。 end_line TEXT IN 是 复制结束的行号,默认是NULL,如果是NULL,则指定到文件尾。 DBE_FILE.GET_ATTR 函数DBE_FILE.GET_ATTR读取并返回一个磁盘文件的属性。 DBE_FILE.GET_ATTR函数原型为: 1 2 3 4 5 6 7 DBE_FILE.GET_ATTR( location IN TEXT, filename IN TEXT, fexists OUT BOOLEAN, file_length OUT BIGINT, block_size OUT INTEGER) RETURN RECORD; 表18 DBE_FILE.GET_ATTR接口参数说明 参数 类型 入参/出参 是否可以为空 描述 location TEXT IN 否 文件所在的目录。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包操作safe_data_path指定文件路径下的文件。 filename TEXT IN 否 文件名。 fexists BOOLEAN OUT 否 文件是否存在。 file_length BIGINT OUT 否 文件的字节长度,如果文件不存在返回NULL。 block_size INTEGER OUT 否 文件系统的块大小(单位字节),如果文件不存在返回NULL。 DBE_FILE.SEEK 函数DBE_FILE.SEEK根据用户指定的字节数向前或者向后调整文件指针的位置。 DBE_FILE.SEEK函数原型为: 1 2 3 4 5 6 7 8 9 10 11 DBE_FILE.SEEK( file IN INTEGER, absolute_start IN BIGINT DEFAULT NULL, relative_start IN BIGINT DEFAULT NULL) RETURN VOID; DBE_FILE.SEEK( file IN DBE_FILE.FILE_TYPE, absolute_start IN BIGINT DEFAULT NULL, relative_start IN BIGINT DEFAULT NULL) RETURN VOID; 表19 DBE_FILE.SEEK接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 absolute_start BIGINT IN 是 文件偏移的绝对位置,这个默认值为NULL。 relative_start BIGINT IN 是 文件偏移的相对位置。如果这个值是正数,向前偏移;如果是负数,向后偏移;默认值为NULL。如果和absolute_start参数同时指定,以absolute_start参数为准。 DBE_FILE.GET_POS 函数DBE_FILE.GET_POS以字节为单位返回文件当前的偏移量。 DBE_FILE.FGETPOS函数原型为: 1 2 3 4 5 6 7 DBE_FILE.GET_POS( file IN INTEGER) RETURN BIGINT; DBE_FILE.GET_POS( file IN DBE_FILE.FILE_TYPE) RETURN BIGINT; 表20 DBE_FILE.GET_POS接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file INTEGER或DBE_FILE.FILE_TYPE IN 否 通过OPEN打开的文件句柄或者FOPEN打开的DBE_FILE.FILE_TYPE类型的对象。 DBE_FILE.FOPEN_NCHAR 函数DBE_FILE.FOPEN_NCHAR用来打开一个文件,可以指定文件每行的最大字节数,一个会话内最多可以同时打开50个文件。该函数返回一个封装了文件句柄的DBE_FILE.FILE_TYPE类型对象。该函数以国家字符集模式打开文件以进行输入或输出。 DBE_FILE.FOPEN_NCHAR函数原型为: 1 2 3 4 5 6 DBE_FILE.FOPEN_NCHAR( dir IN TEXT, file_name IN TEXT, open_mode IN TEXT, max_line_size IN INTEGER DEFAULT 1024) RETURN DBE_FILE.FILE_TYPE; 表21 DBE_FILE.FOPEN_NCHAR接口参数说明 参数 类型 入参/出参 是否可以为空 描述 dir TEXT IN 否 文件的目录位置,这个字符串是一个目录对象名。 说明: 文件目录的位置,需要添加到系统表PG_DIRECTORY中,如果传入的路径和PG_DIRECTORY中的路径不匹配,会报路径不存在的错误。 在打开guc参数safe_data_path时,用户只能通过高级包读写safe_data_path指定文件路径下的文件。 file_name TEXT IN 否 文件名,包含扩展(文件类型),不包括路径名。如果文件名中包含路径,在FOPEN_NCHAR中会被忽略,在UNIX系统中,文件名不能以/.结尾。 open_mode TEXT IN 否 指定文件的打开模式,包含: r:read text w:write text a:append text rb:read byte wb:write byte ab:append byte 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 max_line_size INTEGER IN 是 每行的最大字节数,包含换行符(最小值是1,最大值是32767)。如果没有指定或指定该参数为空,会使用默认值1024。 DBE_FILE.WRITE_NCHAR 函数DBE_FILE.WRITE_NCHAR用于向文件的缓冲区中写入buffer中的数据,文件必须以国家字符集模式和写模式打开,这个操作不会写入行终结符。文本字符串将以UTF8字符集格式写入。 DBE_FILE.WRITE_NCHAR函数原型为: 1 2 3 4 DBE_FILE.WRITE_NCHAR( file IN DBE_FILE.FILE_TYPE, buffer IN NVARCHAR2) RETURN VOID; 表22 DBE_FILE.WRITE_NCHAR接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file DBE_FILE.FILE_TYPE IN 否 通过FOPEN_NCHAR打开的DBE_FILE.FILE_TYPE类型的对象,要写入的文件必须以写模式打开,这个操作不会写入行终结符。 buffer VARCHAR2 IN 是 写入文件的文本数据。每行的累计写入长度不能大于或等于FOPEN_NCHAR时指定或默认的max_line_size,否则会在刷新到文件时报错。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 DBE_FILE.WRITE_LINE_NCHAR 函数DBE_FILE.WRITE_LINE_NCHAR用于向文件的缓冲区中写入buffer中的数据,文件必须以国家字符集模式和写模式打开,这个操作会自动追加行终结符。文本字符串将以UTF8字符集格式写入。 DBE_FILE.WRITE_LINE_NCHAR函数原型为: 1 2 3 4 DBE_FILE.WRITE_LINE_NCHAR( file IN DBE_FILE.FILE_TYPE, buffer IN NVARCHAR2) RETURN VOID; 表23 DBE_FILE.WRITE_LINE_NCHAR接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file DBE_FILE.FILE_TYPE IN 否 通过FOPEN_NCHAR打开的DBE_FILE.FILE_TYPE类型的对象。 buffer VARCHAR2 IN 是 要写入文件的文本数据,每行的长度(包含换行符)不能大于FOPEN_NCHAR时指定或默认的max_line_size,否则会在刷新到文件时报错。 说明: 对于写操作,会检测写入文件类型,如果为elf类型文件,会报错退出。 DBE_FILE.FORMAT_WRITE_NCHAR 函数DBE_FILE.FORMAT_WRITE_NCHAR将格式化数据写入到一个打开的文件的缓冲区中,是允许格式化的DBE_FILE.WRITE_NCHAR接口。 DBE_FILE.FORMAT_WRITE_NCHAR函数原型为: 1 2 3 4 5 6 7 DBE_FILE.FORMAT_WRITE_NCHAR( file IN DBE_FILE.FILE_TYPE, format IN NVARCHAR2, arg1 IN NVARCHAR2 DEFAULT NULL, . . . arg5 IN NVARCHAR2 DEFAULT NULL) RETURN VOID; 表24 DBE_FILE.FORMAT_WRITE_NCHAR接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file DBE_FILE.FILE_TYPE IN 否 通过FOPEN_NCHAR打开的DBE_FILE.FILE_TYPE类型的对象。 format VARCHAR2 IN 是 格式化的字符串,包含文本和格式符\n和%s。 [arg1. . .arg5] VARCHAR2 IN 是 1到5个可选的参数串,参数和格式化字符的位置是一一对应的,如果存在格式化字符而没有提供参数,会使用空串来替代%s。 DBE_FILE.READ_LINE_NCHAR 函数DBE_FILE.READ_LINE_NCHAR从一个打开的文件读取数据,并把读取的结果存放到buffer中。读取的时候会读取到行尾,但不包含行终结符,或者读取到文件末尾,或者读取到len参数指定的大小。读取的长度不能超过FOPEN_NCHAR的时候指定的max_line_size。 DBE_FILE.READ_LINE_NCHAR存储过程原型为: 1 2 3 4 5 DBE_FILE.READ_LINE_NCHAR( file IN DBE_FILE.FILE_TYPE, buffer OUT NVARCHAR2, len IN INTEGER DEFAULT NULL) RETURN NVARCHAR2; 表25 DBE_FILE.READ_LINE_NCHAR接口参数说明 参数 类型 入参/出参 是否可以为空 描述 file DBE_FILE.FILE_TYPE IN 否 通过FOPEN_NCHAR打开的DBE_FILE.FILE_TYPE类型的对象,文件必须以读模式打开,否则会抛出INVALID_OPERATION的异常。 buffer VARCHAR2 OUT 否 接收数据的buffer。 len INTEGER IN 是 从文件中读取的字节数,默认值为NULL。如果是NULL,会使用max_line_size来指定大小。
  • 数据类型介绍 DBE_FILE.FILE_TYPE DBE_FILE.FILE_TYPE类型定义了DBE_FILE包中文件的表示方式,DBE_FILE.FILE_TYPE中的字段是DBE_FILE包的私有字段,请不要直接修改DBE_FILE.FILE_TYPE类型对象中字段的值。 1 2 3 4 5 CREATE TYPE DBE_FILE.FILE_TYPE AS( id INTEGER, datatype INTEGER, byte_mode BOOLEAN ); 表1 DBE_FILE.FILE_TYPE字段说明 参数 描述 id 文件句柄。 datatype 表明文件是CHAR文件还是NCHAR文件或者二进制文件,目前支持CHAR文件和NCHAR文件。CHAR文件返回1,NCHAR文件返回2。 byte_mode 表明文件是以二进制模式打开(TRUE)还是以文本模式打开(FALSE)。
  • 注意事项 DBE_FILE要求以DBE_FILE.FOPEN打开的文件是以数据库字符集编码,如果打开的文件未按预期的字符集编码,在使用DBE_FILE.READ_LINE读取文件时,会发生编码校验错误;DBE_FILE要求以DBE_FILE.FOPEN_NCHAR打开的文件是以UTF-8字符集编码,如果打开的文件未按预期的字符集编码,在使用DBE_FILE.READ_LINE_NCHAR读取文件时,会发生编码校验错误。 当使用DBE_OUTPUT.PUT_LINE打印DBE_FILE.READ_LINE_NCHAR接口得到的结果时,需要确保UTF-8字符集编码能够转换成当前数据库字符集编码,满足上述条件后可以正常输出结果。DBE_OUTPUT.PRINT_LINE不支持该功能。 DBE_FILE要求客户端字符集编码与数据库字符集编码保持一致。 当数据库字符集编码为ASCII编码,客户端字符集编码为支持中文的编码,且在客户端调用DBE_FILE.WRITE_NCHAR或DBE_FILE.WRITE_LINE_NCHAR接口写入中文相关内容时,若输入的内容为UTF-8编码格式,无法保证写入的内容按UTF-8格式编码。这可能会导致后续使用DBE_FILE.READ_LINE_NCHAR时报错。