在 DB2 for Linux, UNIX and Windows 中使用管道加载数据
2010-04-27 00:00:00 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劎绮妵鍕箳鐎n亞浠鹃梺闈涙搐鐎氫即鐛崶顒夋晬婵絾瀵ч幑鍥蓟閻斿摜鐟归柛顭戝枛椤牆顪冮妶搴′簼缂侇喗鎸搁悾鐑藉础閻愬秵妫冮崺鈧い鎺戝瀹撲礁鈹戦悩鎻掝伀缁惧彞绮欓弻娑氫沪閹规劕顥濋梺閫炲苯澧伴柟铏崌閿濈偛鈹戠€n€晠鏌嶆潪鎷屽厡闁汇倕鎳愮槐鎾存媴閸撴彃鍓卞銈嗗灦閻熲晛鐣烽妷褉鍋撻敐搴℃灍闁绘挻娲橀妵鍕箛闂堟稐绨肩紓浣藉煐濮樸劎妲愰幘璇茬闁冲搫鍊婚ˇ鏉库攽椤旂》宸ユい顓炲槻閻g兘骞掗幋鏃€鐎婚梺瑙勬儗閸樺€熲叺婵犵數濮烽弫鍛婃叏椤撱垹纾婚柟鍓х帛閳锋垶銇勯幒鍡椾壕缂備礁顦遍弫濠氱嵁閸℃稒鍊烽柛婵嗗椤旀劕鈹戦悜鍥╃У闁告挻鐟︽穱濠囨嚃閳哄啰锛滈梺褰掑亰閸欏骸鈻撳⿰鍫熺厸閻忕偟纭堕崑鎾诲箛娴e憡鍊梺纭呭亹鐞涖儵鍩€椤掑啫鐨洪柡浣圭墪閳规垿鎮欓弶鎴犱桓闂佸湱枪閹芥粎鍒掗弮鍫熷仺缂佸顕抽敃鍌涚厱闁哄洢鍔岄悘鐘绘煕閹般劌浜惧┑锛勫亼閸婃牠宕濋敃鈧…鍧楀焵椤掍胶绠剧€光偓婵犱線鍋楀┑顔硷龚濞咃絿妲愰幒鎳崇喓鎷犻懠鑸垫毐闂傚倷鑳舵灙婵炲鍏樺顐ゆ嫚瀹割喖娈ㄦ繝鐢靛У绾板秹寮查幓鎺濈唵閻犺櫣灏ㄥ銉р偓瑙勬尭濡繂顫忛搹鍦<婵☆垰鎼~宥囩磽娴i鍔嶉柟绋垮暱閻g兘骞嬮敃鈧粻濠氭偣閸パ冪骇鐎规挸绉撮—鍐Χ閸℃ê闉嶇紓浣割儐閸ㄥ墎绮嬪澶嬪€锋い鎺嶇瀵灝鈹戦埥鍡楃仯闁告鍕洸濡わ絽鍟崐鍨叏濡厧浜鹃悗姘炬嫹

TestPipe.java — 创建、使用和关闭 Windows 指定管道的 JNI 调用。
TestUnixPipe.java — 包含对 mkfifo 命令的指纹调用,用于创建、使用和抛弃 UNIX 中的指定管道
db2load.sql — 包含使用管道的 DB2 LOAD 命令。
Windows 中的指定管道
在 Windows 中创建的指定管道并不如在 UNIX 和 Linux 中创建的管道那样持久,并且您采用与特殊文件相似的方式来创建它们。Windows 指定管道的访问更像是文件,但管道在 Windows Explorer 中并不可见。Windows 管道将加载到一种特殊的文件系统。您可以使用 Windows SDK 功能(如 CreateFile、ReadFile、 WriteFile 和 CloseHandle)来打开、读取、写入和关闭管道。
UNIX 和 Linux 中的指定管道
在 UNIX 或 Linux 中,您可以使用 mkfifo 或 mknod 命令来创建指定管道。两个独立的进程可以访问创建的管道。mkfifo 命令将创建一个 First In First Out (FIFO) 文件。然后,您可以使用此 FIFO 文件将信息从一个应用程序移到另一个应用程序,而不需要将数据存储在中间文件中。因此,您可以节省原本用于存储临时文件的空间。如果为类型指定了 p 选项,则 mknod 命令还将创建一个指定管道。
以下命令示例将通过两个步骤创建一个指定管道,并在 Unix 或 Linux 环境中载入数据。
步骤 1 — 将创建一个指定管道,并将未压缩的数据发送给管道:
$ mkfifo db2pipe
$ gunzip tabledata.gz > db2pipe
步骤 2 — 使用管道将未压缩的数据载入到 DB2:
$ db2 connect to sample
$ db2 "LOAD FROM db2pipe OF DEL INSERT INTO mytable"
$ db2 terminate
更多精彩
赞助商链接