在 DB2 for Linux, UNIX and Windows 中使用管道加载数据
2010-04-27 00:00:00 来源:WEB开发网运行 TestPipe.java 程序以使用 Windows 管道
使用以下命令编译和运行示例 TestPipe.java 程序(清单 3)。
javac TestPipe.java
java -Djava.library.path=".." ibm.TestPipe
在上述示例中,您将 java.library.path 系统属性传递给 JVM,用于指示 Pipe.dll 的位置,以便于 JVM 通过 Pipe.dll 调用 Windows 本地方法。在本例中,Pipe.dll 位于比当前目录高一级的目录中。
运行 TestPipe 时,它将创建一个指定管道 \\.\pipe\mynamedpipe,并连接到该管道。随后,它将等待另一个程序(在本例中为 DB2 LOAD 命令)连接到它,然后再开始向管道写入数据。 当 DB2 LOAD 连接到管道之后,Java 程序会开始将 db2tabledata.txt 文件的内容发送给管道以及使用该数据的 DB2 LOAD。
图 1. 在 Windows 命令提示中运行 Java 示例代码
使用管道的 DB2 Load 脚本
如上一节所述,在 TestPipe 程序连接到管道之后,它会等待另一个程序连接到它。要建立这个连接,请运行示例 db2load.sql DB2 脚本(清单 5)。这将创建一个表,并开始调用 LOAD 载入 mynamedpipe。
清单 5. 创建表并启动 LOAD 的示例 DB2 脚本
CONNECT TO SAMPLE;
CREATE TABLE PIPE_TABLE
(
"ID" NUMBER(10) NOT NULL ,
"NAME" VARCHAR2(35) ,
"LOC_ID" NUMBER(4)
)
;
LOAD FROM
"\\.\pipe\mynamedpipe"
OF DEL
MODIFIED BY CODEPAGE=1208 COLDEL~ ANYORDER
USEDEFAULTS CHARDEL"" DELPRIORITYCHAR NOROWWARNINGS
METHOD P (1,2,3)
MESSAGES "db2tabledata.txt"
REPLACE INTO PIPE_TABLE
(
"ID",
"NAME",
"LOC_ID"
)
NONRECOVERABLE
INDEXING MODE AUTOSELECT
;
TERMINATE;
更多精彩
赞助商链接