KingbaseES file_dw 介绍
file_dw简介
 file_fdw模块提供外部数据包装器file_fdw, 它能被用来访问服务器的文件系统中的数据文件,或者在服务器上执行程序并读取它们的输出。 数据文件或程序输出必须是能够被COPY FROM读取的格式. 详见COPY。当前只能读取数据文件。
参数设置:
- filename - 指定要被读取的文件。必须是一个绝对路径名。 必须指定filename或program, 但不能同时指定两个。 
- program - 指定要执行的命令。该命令的标准输出将被读取, 就像使用COPY FROM PROGRAM一样。必须指定program 或filename,但不能同时指定两个。 - 注意该命令是由 shell 调用,因此如果你需要传递任何来自不可信来源的 参数给 shell 命令,你必须小心地剥离那些可能对 shell 有特殊意义的特殊字符。出于安全原因,最好使用一个固定的命令字符串,或者至少避免传递任何用户输入到其中。 
- format - 指定数据的格式:text、 csv(逗号分隔值)或者binary。默认是text 
- header - 指定数据是否具有一个头部行,指定文件包含标题行,其中有每一列的名称。在输出时,第一行包含来自表的列名。在输入时,第一行会被忽略。只有使用 CSV格式时才允许这个选项。。 
- delimiter - 指定分隔文件每行中各列的字符。文本格式中默认是一个制表符,而CSV格式中默认是一个逗号。KingbaseES支持设置不大于8个字节的分隔符。使用binary格式时不允许这个选项。 
- quote - 指定数据的引用字符,默认是双引号。这必须是一个单一的单字节字符。只有使用 CSV格式时才允许这个选项。 
- escape - 指定数据的转义字符,这必须是一个单一的单字节字符。只有使用 CSV格式时才允许这个选项。 
- null - 指定数据的空字符串,指定表示一个空值的字符串。文本格式中默认是 \N(反斜线-N),CSV格式中默认是一个未加引用的空串。在你不想区分空值和空串的情况下,即使在文本格式中你也可能更喜欢空串。使用binary格式时不允许这个选项。。 
- encoding - 指定数据的编码,和COPY的ENCODING选项相同。 
file_fdw使用
以下测试基于kingbase v8r6版本:
1.将file_fdw 安装为 一个扩展
test=# create extension file_fdw;
CREATE EXTENSION
2.创建一个外部服务接口
test=# create server ser_file_fdw foreign data wrapper file_fdw;
CREATE SERVER
查询已创建的外部服务接口
test=# \des
             外部服务器列表
     名称     | 拥有者 | 外部数据封装器
--------------+--------+----------------
 ser_file_fdw | system | file_fdw
 sysaudit_svr | system | sysaudit_fdw
(2 行记录)
3.通过program方式创建外部表
test=# CREATE FOREIGN TABLE etc_password (
test(#   username  TEXT,
test(#   password  TEXT,
test(#   user_id   INTEGER,
test(#   group_id  INTEGER,
test(#   user_info TEXT
test(# ) SERVER fs OPTIONS (
test(#   PROGRAM
test(# $$
test$# awk -F: 'NF && !/^[:space:]*#/ {print $1,$2,$3,$4,$5}' OFS='\037' /etc/passwd
test$# $$
test(# ,
test(#   FORMAT 'csv', DELIMITER E'\037'
test(# );
CREATE FOREIGN TABLE
test=# select * from etc_password;
     username     | password | user_id | group_id |                            user_info
------------------+----------+---------+----------+-----------------------------------------------------------------
 root             | x        |       0 |        0 | root
 bin              | x        |       1 |        1 | bin
 daemon           | x        |       2 |        2 | daemon
 adm              | x        |       3 |        4 | adm
 lp               | x        |       4 |        7 | lp
 sync             | x        |       5 |        0 | sync
 shutdown         | x        |       6 |        0 | shutdown
 halt             | x        |       7 |        0 | halt
 mail             | x        |       8 |       12 | mail
 operator         | x        |      11 |        0 | operator
 games            | x        |      12 |      100 | games
 ftp              | x        |      14 |       50 | FTP User
 nobody           | x        |   65534 |    65534 | Kernel Overflow User
 systemd-coredump | x        |     999 |      997 | systemd Core Dumper
 systemd-network  | x        |     192 |      192 | systemd Network Management
 systemd-resolve  | x        |     193 |      193 | systemd Resolver
 systemd-timesync | x        |     998 |      996 | systemd Time Synchronization
 tss              | x        |      59 |       59 | Account used by the trousers package to sandbox the tcsd daemon
 unbound          | x        |     997 |      995 | Unbound DNS resolver
 polkitd          | x        |     996 |      994 | User for polkitd
 rtkit            | x        |     172 |      172 | RealtimeKit
 chrony           | x        |     995 |      993 |
 dhcpd            | x        |     177 |      177 | DHCP server
 sshd             | x        |      74 |       74 | Privilege-separated SSH
 geoclue          | x        |     994 |      990 | User for geoclue
 pulse            | x        |     171 |      171 | PulseAudio System Daemon
 tcpdump          | x        |      72 |       72 |
 dbus             | x        |     987 |      987 | System Message Bus
 apache           | x        |      48 |       48 | Apache
 kingbase         | x        |    1000 |     1000 |
 test             | x        |    1001 |     1001 |
 kdb1             | x        |    1002 |     1002 |
(32 rows)
 4.通过csv创建一个外部表
创建test.csv内容如下
ID    ID2   NAME
2     55   single
6     58   multiple
8     53   single
根据csv文件创建外部表
test=# CREATE FOREIGN TABLE foreign_tab (
test(#   "ID" character varying(50 char) NULL,
test(#   "ID2" integer NULL,
test(#   "NAME" character varying(50 char) NULL
test(# ) SERVER ser_file_fdw
test-# OPTIONS ( filename 'C:\Program Files\Kingbase\ES\V8\data\ECRecord.CSV',format 'csv', HEADER 'TRUE' );
CREATE FOREIGN TABLE
test=# SELECT * FROM FOREIGN_TAB;
 ID | ID2 |   NAME
----+-----+----------
 2  |  55 | Single
 6  |  58 | Multiple
 8  |  53 | Single
(3 行记录)
对外部表的操作,外部表不支持insert ,update和delete操作。
1.连接查询
test=# select * from t1;
 f_rowid | dingdan  | yaopin
---------+----------+--------
       1 | d001     | c001
       3 | d003     | c003
       2 | Single   | c002
       6 | Multiple | c006
      11 | Single   | Single
(5 行记录)
test=# SELECT * FROM foreign_tab f ,t1 b WHERE f.id=b.f_rowid;
 ID | ID2 |   NAME   | f_rowid | dingdan  | yaopin
----+-----+----------+---------+----------+--------
 2  |  55 | Single   |       2 | Single   | c002
 6  |  58 | Multiple |       6 | Multiple | c006
(2 行记录)
2.merge 操作   由于外部表不支持delete insert update操作,merge时外部表只能做参照表
test=# select * from t1;
 f_rowid | dingdan  | yaopin
---------+----------+--------
       1 | d001     | c001
       3 | d003     | c003
       2 | Single   | c002
       6 | Multiple | c006
(4 行记录)
test=# select * from foreign_tab;
 ID | ID2 |   NAME
----+-----+----------
 2  |  55 | Single
 6  |  58 | Multiple
 8  |  53 | Single
(3 行记录)
test=# merge into t1 a using foreign_tab b
test-# on (a."f_rowid" = b.id)
test-# when matched then update set dingdan=b.id2
test-# when not matched then insert values(b.id, b.id2,b.name);
MERGE 3
test=# select * from t1;
 f_rowid | dingdan | yaopin
---------+---------+--------
       1 | d001    | c001
       3 | d003    | c003
       2 | 55      | c002
       6 | 58      | c006
       8 | 53      | Single
(5 行记录)
file_fdw卸载
 在ksql中运行drop命令进行卸载 如果有外部表依赖则需要加cascade
test=# drop extension file_fdw;
DROP EXTENSION
存在依赖:
test=# drop extension file_fdw;
错误:  无法删除 扩展 file_fdw 因为有其它对象倚赖它
描述:  服务器 pglog 倚赖于 外部数据封装器 file_fdw
外部表 ECRecord_new 倚赖于 服务器 pglog
外部表 ECRecord_new2 倚赖于 服务器 pglog
外部表 ECRecord_new3 倚赖于 服务器 pglog
外部表 ECRecord_new4 倚赖于 服务器 pglog
提示:  使用 DROP .. CASCADE 把倚赖对象一并删除.
test=# drop extension file_fdw cascade;
注意:  串联删除5个其它对象
描述:  递归删除 服务器 pglog
递归删除 外部表 ECRecord_new
递归删除 外部表 ECRecord_new2
递归删除 外部表 ECRecord_new3
递归删除 外部表 ECRecord_new4
DROP EXTENSION
file_fdw升级
 file_fdw扩展插件通常随着KingbaseES安装包一并升级。通常情况下用户无须单独升级些插件。
KingbaseES file_dw 介绍的更多相关文章
- KingbaseES DBLink 介绍
		DBLink 扩展插件功能与 Kingbase_FDW 类似,用于远程访问KingbaseES 数据库.相比于Kingbase_FDW,DBLink 功能更强大,可以执行DML,还可以通过 begin ... 
- KingbaseES触发器介绍
		触发器及其作用 触发器(trigger)是用户定义的由事件驱动的特殊过程.一旦定义,所有用户的对应操作均会由服务器自动激活相应的触发器,在DBMS核心层进行集中的完整性控制. 触发器类似于约束,但是比 ... 
- KingbaseES 全文检索功能介绍
		KingbaseES 内置的缺省的分词解析器采用空格分词,因为中文的词语之间没有空格分割,所以这种方法并不适用于中文.要支持中文的全文检索需要额外的中文分词插件:zhparser and sys_ji ... 
- KingbaseES DBLink 扩展介绍
		DBLink 扩展插件功能与 Kingbase_FDW 类似,用于远程访问KingbaseES 数据库.相比于Kingbase_FDW,DBLink 功能更强大,可以执行DML,还可以通过 begin ... 
- KingbaseES 工具sys_dump,sys_restore使用介绍
		说明: KingbaseES V8R6版本中自带数据库备份导出sys_dump,和备份恢复sys_restore工具. sys_dump:把KingbaseES数据库抽取为一个脚本文件或其他归档文件. ... 
- KingbaseES interval 分区表介绍
		KingbaseES从V008R006C005B0041版本开始支持Oracle的Interval分区表功能. Interval分区表是一种特殊的范围分区表.当执行INSERT或者UPDATE时,若数 ... 
- KingbaseES 数据脱敏功能介绍
		数据脱敏,指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护. KingbaseES主要提供动态数据脱敏功能. 动态数据脱敏(Dynamic Data Masking)是与生产环境 ... 
- KingbaseES 中 JSON 介绍
		KingbaseES支持JSON和JSONB.这两种类型在使用上几乎完全一致,主要区别是 JSON类型把输入的数据原封不动的存放到数据库中.JSONB类型在存放时把JSON解析成二进制格式. JSON ... 
- KingbaseES insert all/first 功能介绍
		KingbaseES 内置了对于insert all / first 语法的支持. 一.数据准备 create table t1(product_id number, product_name var ... 
- KingbaseES ksqlrc文件介绍
		ksqlrc文件作用 ksql在连接到数据库后但在接收正常的命令之前,会尝试读取并执行该文件中的命令,如果加上-X参数,则跳过该文件. 系统级的启动文件是ksqlrc,文件在安装好的KingbaseE ... 
随机推荐
- v-html可能导致的问题
			v-html可能导致的问题 Vue中的v-html指令用以更新元素的innerHTML,其内容按普通HTML插入,不会作为Vue模板进行编译,如果试图使用v-html组合模板,可以重新考虑是否通过使用 ... 
- Springboot中如何使用日志框架logback和log4j2?
			说明 在这个简短的教程中,我们将探索 Spring Boot 中可用的主要日志记录选项:logback和log4j2 初始设置 使用 starters 时,默认使用 Logback 进行日志记录. 让 ... 
- django学习第五天---model类的属性参数,单表ORM数据库增删改查动作,查询的13个API接口
			model类的属性参数 比如:models.CharField(null=True,blank=True) (1)null 如果为True,Django将用NULL在数据库中存储空值.默认值时Fals ... 
- Gin框架入门
			参考文档 Gin: https://gin-gonic.com/zh-cn/docs/quickstart/ net/http: https://pkg.go.dev/net/http 代码分析 pa ... 
- django中如果不是第一次迁移的时候就配置AUTH_USER_MODEL(用来告知django认证系统识别我们自定义的模型类),那么该如何解决才能让django的认证系统识别且不会报未知错误?
			Django认证系统中提供的用户模型类及方法很方便,我们可以使用这个模型类,但是字段有些无法满足项目需求,如还需要保存用户的手机号,需要给模型类添加额外的字段. Django提供了django.con ... 
- 全表查询sql执行链路排查
			问题描述: 发现有sql查询全表数据,慢查询语句,根据druid上的sql监控查看到. 主要根据标红的列确定问题sql. 点击进去可以看到详细sql信息. 问题排查目标: 发现这个语句高层调用方特别多 ... 
- spark conf、config配置项总结
			1.structured-streaming的state 配置项总结 Config Name Description Default Value spark.sql.streaming.stateSt ... 
- java.util.Arrays  快速学习教程
			在 Java 中,java.util.Arrays类提供的多种数组操作功能,可以有效地执行各种数组相关的操作,使得数组处理变得简单和高效. 打印数组 String[] arr = new String ... 
- 10 个解放双手的 IDEA插件,少些冤枉代码(第三弹)
			大家好,我是小富- 好久没发这种实用贴了,最近用到了一些能提升工作效率的IDEA插件,给小伙伴们分享一下.相信我,我分享的这些插件,都是实实在在能解决实际开发场景中痛处的. 以往的两篇IDEA插件分享 ... 
- aardio调用c语言dll动态库传结构体详细教程
			开发日记3.11 此篇用于记录发那科数控机床(Fanuc CNC)采集程序开发中,C语言写底层然后用aardio写窗口调用dll的摸索出来的类型对应和踩坑整理. 由于发那科提供的开发套件是C语言的,所 ... 
