I am stuck into a situation where I need to insert data into a blob column by reading a file from the Filesystem in DB2 (DB2 Express C on Windows 7).
Somewhere on the internet I found this INSERT INTO ... VALUES ( ..., readfile('filename'), ...);
but here readfile is not an inbuilt function but I need to create it using UDF (c language libraries), but that might not be a useful solution.
Can somebody update us how to insert BLOB values using Insert command.
答案 0 :(得分:0)
1)您可以通过LOAD使用IMPORT或ADMIN_CMD。通过这种方式,您可以使用SQL来调用将调用该工具的管理存储过程。导入或加载可以读取文件,然后将其放在一行。
您还可以使用临时表来包装此进程,该表将从文件读取二进制数据,将其插入临时表,然后将其从表中返回。
2)您可以创建一个用Java或C实现的外部存储过程或UDF,它将读取数据,然后将其插入行中。
答案 1 :(得分:0)
我还没试过,但您也可以使用处理LOB的内置模块http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.apdv.sqlpl.doc/doc/r0055115.html
仅在版本9.7以后的DB2 LUW中提供
答案 2 :(得分:0)
我已成功通过使用带有以下查询的IBM Data Studio来实现此目的:
INSERT INTO MY_TABLE (BLOB_COLUMN) values (?);
从弹出对话框中选择一个文件。
不知何故,RAD 8中的相同方法没有显示以相同方式加载blob列类型的选项。
答案 3 :(得分:0)
首先,除了IBM docs之外,DB2中的所有LOB数据除了在表中定义的LOB列外,还必须具有以下相应的项。请参阅文档,例如CREATE
语句。
准备好此模式后,您可以运行LOAD
命令,该命令可以与其他数据字段一起导入,其中blob内容由文件路径引用。以下是带有 Employees 表的演示:
数据库表 (示例表)
CREATE TABLE EMPLOYEES (
ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY,
EMPLOYEE_NUMBER INTEGER,
EMPLOYEE_NAME VARCHAR(255),
EMPLOYEE_PIC BLOB(500K)
);
CSV文件 (逗号是LOAD
中没有标题的默认分隔符)
1234, "John Doe", johndoe.jpg
5678, "Jane Doe", janedoe.jpg
...
DB2 LOAD (使用其他许多LOAD parameters的默认值的简单版本)
LOAD FROM "/path/to/file.csv"
OF DEL
LOBS FROM /path/to/picture/folder/ --PATH OF BLOB FILES WITH BASENAME IN CSV
--MUST END IN FORWARD SLASH
MODIFIED BY LOBSINFILE CHARDEL""
DUMPFILE="/path/to/dump.txt" --FOR FAILED IMPORTS
METHOD P (1,2,3) --NUMBER REFERENCE OF COLS, OR USE N FOR FIELD NAMES
MESSAGES "/path/to/messages.txt" --FOR LOAD COMMAND MESSAGES
REPLACE INTO "EMPLOYEES" --REMOVES EXISTING FOR IMPORT, OR USE INSERT TO ADD
(EMPLOYEE_NUMBER
EMPLOYEE_NAME,
EMPLOYEE_PIC);
命令行
> db2 -tvf "/path/to/load_command.sql"
> db2 "SELECT LENGTH(EMPLOYEE_PIC) FROM EMPLOYEES"
答案 4 :(得分:-3)
create table table_name(column_name BLOB)/ * BLOB是数据类型
插入table_name(column_name)值(blob(' c:\ data \ winter.jpg'))
c:\ data \它是一个路径,winter.jpg是一个图像名称