返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

插入二进制数据
使用游标的execute 可以插入二进制数据内容。请参考下面的样例。

GBase Python 接口开发手册


- 16 -

南大通用数据技术股份有限公司
from GBaseConnector import connect, GBaseError
if __name__ == '__main__':
config = {'host':'172.16.0.131',
'user':'root',
'passwd':'111111',
'port':5258,
'db':'test'}
try:
conn = connect()
conn.connect(**config)
fobj = open("c:\\1.gif",'rb')
fbytes = fobj.read()
fobj.close()
cur = conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS test(f blob)")
cur.execute("INSERT INTO test VALUES(_binary%s)",(fbytes,))
cur.execute("DROP TABLE IF EXISTS test")
cur.close()
except (GBaseError.DatabaseError, IOError), err:
print err
finally:
conn.close()

动态链接库
(DLL)
是可由应用程序共享的资源和函数的集合。
它类似于 runtime 库,
因为它存储许多应用程序需要的函数。然而,它与 runtime 库不同之处在于它链接到调用
的应用程序。
在编译时链接的库是静态链接库。诸如 libc 和 libcmt 之类的库(与 Microsoft™
Visual C++ Version 2.x 一起使用)是静态链接库。 无论何时将这些 Microsoft Visual C++
(版本 2.x)
之一链接到应用程序,
链接器将代码从适当的静态链接库复制到应用程序的可
执行文件中(.exe)。相比之下,当自动链接时,不会将代码复制到应用程序的可执行文件
中。相反,您的函数在运行时链接。
静态链接库在不需要多任务的环境中是有效的。但是,当多个应用程序调用相同的功
能时,它们变得无效。例如:如果在 Windows™ 环境中同时运行的两个应用程序调用相
同的静态链接函数,则该函数的两个副本位于内存中。这种情况是低效率的。
但是如果一个函数是动态链接的,则 Windows 系统首先检查内容,看看函数的副本
是否已经存在。如果存在副本,则 Windows 系统使用此副本而不是另一个创建另一个副
本。
如果内存中该函数还尚未存在,
则 Windows 系统将该函数从 DLL 中链接或复制到内
存中。
GBase 8s ESQL/C 库函数和其它内部函数包含在 ESQL 客户端接口 DLL 中。
要在您
的 GBase 8s ESQL/C 函数中使用这些函数,必须执行以下操作:
访问 ESQL 客户端接口 DLL 的导入库
定位 ESQL 客户端接口 DLL
访问导入库
使用 DLL 的导入库以使您的 GBase 8s ESQL/C 应用程序访问 ESQL 客户端接口
DLL 。
链接器使用导入库定位 DLL 中包含的函数。它包含使应用程序中使用的函数名称与
包含该函数的库模块协调的引用。
当将静态库链接到应用程序时,链接器将程序代码以静态链接库复制到可执行文件。
但是,如果将导入库链接到应用程序,链接器在链接可执行文件时不会复制程序代码。链
接器存储在 DLL 中定位函数所需的信息。运行应用程序是,此位置信息充当 DLL 的动
态链接。

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 73 -

ESQL 客户端接口库提供 GBase 8s ESQL/C 函数调用的位置信息。当您使用它编译
并链接您的 GBase 8s ESQL/C 程序时,esql 命令处理器将自动链接 DLL 的导入和
Windows™ 库。
定位 DLL
在程序开发期间,GBase 8s ESQL/C 软件(如 esql 命令处理器)必须能访问对象库
并导入库。但是,在运行应用程序时 DLL 必须是可访问的。也就是说,Windows™ 必须
能够在您的硬盘上找到它们。
按照以下顺序搜寻 DLL 的目录:
加载应用程序的目录
Windows 环境系统目录 SYSTEM
当前目录(可执行文件所在的位置或图标的程序项目属性值指定的工作目录)
PATH 环境变量列出的目录
有关特定 Windows 操作系统的最新信息,请参阅 http://www.microsoft.com 上的
动态链接库搜寻顺序文档。
构建应用程序 DLL
可以告诉 GBase 8s ESQL/C 处理器使用 -target(或 -wd)命令行选项将 GBase 8s
ESQL/C 程序构建为 DLL(.dll 文件)ile)。这种 GBase 8s ESQL/C 程序被称为应用程序
DLL。
要将 GBase 8s ESQL/C 程序构建为 DLL,
请遵循通用 DLL 的直到。
有关更多信息,
请参阅您的系统文档。使用 -target:dll(或 -wd)编译 GBase 8s ESQL/C 源文件以创建应
用程序 DLL。
有关如何构建应用程序 DLL 的信息,
请参阅 %GBASEDBTDIR%\demo\wdemo 目录
中的 WDEMO 演示程序。示例应用程序 DLL 的 GBase 8s ESQL/C 源文件称为 wdll.ec。
要编译此 DLL,使用下面的 esql 命令:
esql -subsystem:windows -target:dll wdll.ec
WDEMO 可执行文件的源代码在 wdemo.exe 文件中。

功能
该参数用于设定行分隔符。只在format=3 时,该参数有效。
示例
示例1
--line_separator ='@'
示例2
-l'@'
如果设定为十六进制的行分隔符,则命令参数后面用双引号扩起十六进制值。
示例1
--line_separator ="x'62'"
示例2

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
564
-l"x'62'"
参数说明
表4- 122 参数说明
参数全称
参数简称
取值范围
默认值
line_separator
l
单个字符
'\n'
注意
format=5 加载模式下只支持单字节换行符。