IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 解决金仓数据库KingbaseES V8R6 BYTEA类型写入操作遭遇内存分配失败的问题 -> 正文阅读

[系统运维]解决金仓数据库KingbaseES V8R6 BYTEA类型写入操作遭遇内存分配失败的问题

问题描述
使用金仓数据库KingbaseES写入512MB+数据,或者在使用COPY命令迁移数据时,出现如下所示报错:
错误: 无法为包含1073725513字节的字符串缓冲区扩大65536个更多字节

问题原因
触发金仓数据库KingbaseES对BYTEA类型的最大容量限制,以及使用方式不当导致。
解决方法
金仓数据库KingbaseES BYTEA(含BLOB、CLOB)的最大上限是大约(不超过)1GB。它不支持以明文的方式写入512MB+的数据,如下所示:
kingbase=# create table tb(x bytea);
kingbase=# insert into tb values (‘x1111111111……111’);
kingbase=# 错误: 无法为包含1073725513字节的字符串缓冲区扩大65536个更多字节
kingbase=# error: invalid memory alloc request size 1073725513

遇到上述错误,可使用接口的方式写入大数据。它支持接口pg_read_binary_file,如下所示:
kingbase=# create table tb(x bytea);
kingbase=# insert into tb values (pg_read_binary_file(‘./900MB.file’);
kingbase=#

金仓数据库KingbaseES除了支持以INSERT的方式写数据,为了方便数据的移植与备份(即数据批量操作),还支持以COPY命令的方式批量写入数据。COPY命令同时支持CSV与BINARY两种方式导入与导出数据。
其中CSV是文本的方式,它具有高度的可移植性,可满足任意的跨平台需求,但导出的数据会膨胀,导入时可能会遭遇本文提及的错误(即内存分配失败)。
BINARY是二进制的方式,它具备高速的数据导出与导入性能,但是可移植性不好,受到服务器位制与大小端机的限制。因此,当写入的数据容量不超过1GB,并遭遇内存分配失败时,一般是使用COPY CSV导致的,这时需要使用COPY BINARY的方式。
如果迁移数据的服务器属于同一台服务器,或者是不同服务器,但是却拥有相同的架构,这时可以使用COPY BINARY对数据进行导出与导入,不同服务器时需要拷贝文件到目标服务器。如下所示为从tb1表导出数据到文件binary,再把文件中的数据导入到tb2表:
kingbase=# copy binary tb1 to ‘/home/kingbase/binary’;–导出数据
kingbase=# copy binary tb2 from ‘/home/kingbase/binary’;–导入数据
kingbase=#

前面提到,COPY命令BINARY方式的数据可移植性不是很好,当CPU架构不一致时存在一些问题。V8R6版本支持sys_bulkload工具,它支持把数据库内的数据以CSV的格式导出与导入,并且不会引发上述的错误。当然,任何平台都可以使用sys_bulkload工具,使用前需要加载sys_bulkload插件。导出tb1表的数据到文件tb1.csv,如下所示:
kingbase$ sys_bulkload -i tb1 -O /home/kingbase/tb1.csv -o “TYPE=DB” -o “WRITER=CSV_FILE” -p 2222 -U SYSTEM -W 123 -d TEST

把数据文件tb1.csv转移至目标服务器后,导入到tb2表,如下所示:
kingbase$ sys_bulkload -i /home/kingbase/tb1.csv tb1 -O tb2 -o “TYPE=CSV” -p 2222 -U SYSTEM -W 123 -d TEST
至此,出现的问题得以修复。
参考手册
相关内容可参考官方产品用户文档:https://help.kingbase.com.cn

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 22:36:33  更:2022-03-11 22:38:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:28:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码