openGauss 客户端工具:gs_loader(3)

参数说明

表 2 gs_loader参数说明

参数

参数说明

参数类型 : 取值范围

help

查看帮助信息。

-

user

数据库链接用户(与-U等价)。

字符串

-U

数据库链接用户(与user等价)。

字符串

passwd

用户密码(与-W等价)。

字符串

-W

用户密码(与passwd等价)。

字符串

db

数据库名称(必选,与-d等价)。

字符串

-d

数据库名称(必选与db等价)。

字符串

host

指定正在运行服务器的主机名、Unix域套接字的路径、或者域名。接受以“,”分隔的字符串来指定多个主机地址,支持指定多个主机地址(与-h等价)。

当指定多个主机地址时,默认选择连接到主节点。

参考gsql --host参数

-h

指定正在运行服务器的主机名、Unix域套接字的路径、或者域名。接受以“,”分隔的字符串来指定多个主机地址,支持指定多个主机地址(与host等价)。

当指定多个主机地址时,默认选择连接到主节点。

参考gsql --host参数

port

指定数据库服务器的端口号。可以配置一个或多个,当配置一个时,所有的IP都使用同一个端口连接;当配置多个时,顺序与IP顺序相同,个数必须与IP数相等,当不相等时会报错(与-p等价)。

参考gsql --port参考

-p

指定数据库服务器的端口号。可以配置一个或多个,当配置一个时,所有的IP都使用同一个端口连接;当配置多个时,顺序与IP顺序相同,个数必须与IP数相等,当不相等时会报错(与port等价)。

参考gsql --port参考

create

是否创建pgxc_copy_error_log和gs_copy_summary表。

[true, false],默认true

clean

是否清除本次错误记录。

[true, false],默认false

data

数据文件,可以指定多个,或者通配符多字符通配(*)以及单字符通配(?)(必选)。

字符串

control

控制文件名称(必选)。

字符串

log

日志文件名称。

字符串

bad

出错行以及详细情况记录文件名称,也可以指定目录,不指定时根据数据文件名生成。

字符串

discard

WHEN匹配失败行记录文件名称,也可以指定目录,根据数据文件名生成。

字符串

errors

允许数据文件中出现多少出错行。

整数,默认0

skip

允许跳过数据文件的前多少行。

整数,默认0

limit

指定最多导入的行数。

整数,默认无限大

bindsize

仅做语法兼容不实现功能。

-

rows

多行提交参数,指定导入多少行数据后进行一次提交。

整数,取值范围[1, 2147483647]

compatible_nul

是否开启数据中nul字符(0x00)兼容,开启后当数据文件中存在nul字符时,会先将nul字符转换成为空格字符' '(0x20),再进行判断,加工和导入。

[true, false],默认true。

compatible_illegal_chars

是否开启非法字符容错功能,与COPY语法中的COMPATIBLE_ILLEGAL_CHARS容错规则和限制相同,详见《开发者指南》的“SQL 语法 > COPY”章节的COPY_OPTION中COMPATIBLE_ILLEGAL_CHARS参数说明。

[true, false],默认false。

parallel

指定并行导入的并发度。当并发度大于1时,表示开启并行导入模式。当并发度等于1时,转化为串行导入。并发度最大值限定不超过客户端CPU核数的两倍。当客户端运行在容器中时,由于获取到的是主机的cpu数量,可能比容器实际能使用的多,并发度建议由用户自行控制在实际能使用的客户端cpu数量的两倍范围内。另外该能力通过多线程并发多个事务实现,实际并发度会受限于服务端的线程池模型,也同时会给服务端增加压力,请按实际情况合理设置并发度。

整数,取值范围[1, CPU核数两倍],默认1

binary

数据文件是否为通过copy的binary模式导出的二进制文件。

[true, false],默认false。

 注意:

  • 参数均为小写,不支持大写,同时兼容gsql登录方式:-p端口号,-h主机,-d数据库,-U用户名,-W密码方式。
  • 使用rows参数时,提交次数不要超过1000次,否则会对性能产生影响。提交次数约等于数据文件中数据行数除以rows参数取值。不指定rows参数时,rows无默认取值,表现为只进行一次提交,即所有数据都导入表中后进行一次事务提交。
  • 小数据量频繁的提交会影响导入数据的性能,推荐合理配置rows参数的取值,保证每次提交的数据量大于5MB。对于常用的16U128G规格机器,一主两备部署场景下,向5个字段的表内导入13GB数据,排除网络影响,多次提交和单次提交(每次提交5MB数据)的速率基本持平,为10MB/s左右。
  • compatible_nul参数实际控制guc参数loader_support_nul_character值的设置:
  • compatible_nul=true对应session级set loader_support_nul_charchter='s2'。
  • compatible_nul=false对应session级set loader_support_nul_character='s1'。 建议通过命令行设置此参数且通过compatible_nul设置优先级高于guc_param中设置。
  • 当前gs_loader仅支持数据文件中存在nul字符时的兼容,不支持ctl控制文件中存在nul字符。ctl文件中存在nul字符会存在不可预期的问题。
  • 指定binary参数为true后,有以下行要求:
  • 数据文件必须为通过\COPY中BINARY模式导出的二进制格式数据文件,但是该模式导出的数据文件通常兼容性及可移植性较差,建议直接使用\COPY语句进行导入。
  • gs_loader会将控制文件中语法转换为\COPY中BINARY模式下最简单的语法,即\COPY table_name FROM 'binary_file_path' BINARY; 语句。只解析控制文件中导入模式,表名信息和命令行中的control、data、binary、guc_param及数据库连接参数信息,不对其他参数语法进行解析和生效。
  • 对于gs_loader的命令行及控制文件中有以下要求:
    • 不支持字符集配置。
    • 不支持WHEN条件过滤及DISCARD生成。
    • 不支持enable_copy_error_log = off下将错误数据直接写入bad文件。errors默认取值unlimited,会默认记录编码异常数据。
    • 不支持配置CSV模式,不支持指定分隔符及包裹符,不支持TRAILING NULLCOLS语法。
    • 不支持数据类型配置、POSITION配置及列表达式使用。
    • 不支持FILLER、CONSTANT、SEQUENCE、NULLIF参数。
    • 不支持skip、rows、compatible_nul、compatible_illegal_chars参数。
  • 指定parallel大于1时:
  • 当同时设置binary参数为true时,parallel参数失效,按串行导入。
  • 不支持在控制文件中设置OPTIONALLY ENCLOSED BY或者FIELDS CSV。
  • 不支持在控制文件中设置SEQUENCE列。
  • 无法保证数据按数据文件中的顺序导入。如果表中存在自增列,导入后自增列值的顺序无法保证与数据文件中顺序一致。
  • 同时使用errors参数时,errors参数的意义为每个子任务允许出现的最大错误行数。
  • 同时使用skip参数时,skip参数的意义是在整个数据文件开头跳过的行数。
  • 同时使用rows参数时,分批提交的批次各子任务独立计算。
  • 在客户端CPU、内存和服务端CPU、内存、空闲线程以及网络带宽不存在瓶颈时,相比于串行导入,并发度为2/4/8时的性能提升不低于1.5/3/5倍。
  • 并发度每增加1,大约增加客户端10MB内存,服务端大约35MB内存。
  • 当设置GUC参数support_zero_character为on时,表示数据库支持0x00字符的写入和读取,gs_loader导入数据时,会将0x00按照原始样式导入,而不是受其他兼容性参数影响转换成0x20。
-bash: gs_basebackup: command not found异常表示系统无法找到名为gs_basebackup的命令。这可能是因为该命令没有正确安装或者没有将其路径添加到系统的环境变量中。 要解决这个问题,你可以尝试以下几种方法: 1. 确认命令是否正确安装:首先,你需要确认gs_basebackup命令是否已经正确安装在你的系统中。你可以通过运行以下命令来检查: ```shell which gs_basebackup ``` 如果命令已经正确安装,它会返回命令的路径。如果没有返回任何结果,那么命令可能没有正确安装。 2. 检查环境变量:如果命令已经正确安装,但仍然无法找到,那么可能是因为系统的环境变量没有包含该命令的路径。你可以通过运行以下命令来检查环境变量: ```shell echo $PATH ``` 确保命令的路径已经包含在输出结果中。如果没有包含,你可以通过编辑你的bash配置文件(例如~/.bashrc或~/.bash_profile)并将命令的路径添加到PATH变量中来解决这个问题。例如: ```shell export PATH=$PATH:/path/to/gs_basebackup ``` 保存文件后,重新启动终端或运行以下命令使更改生效: ```shell source ~/.bashrc ``` 3. 检查命令是否可执行:最后,确保命令具有执行权限。你可以使用以下命令为命令添加执行权限: ```shell chmod +x /path/to/gs_basebackup ``` 然后再次尝试运行命令。 如果你仍然遇到问题,请提供更多关于你的系统和安装过程的信息,以便我们能够更好地帮助你解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值