« SQLULDR2的按列文本输出 »
Tools » http://www.anysql.net/tools/sqluldr2-column-separator-option.html 2009-12-25在一些非关系型数据库(NOSQL)中, 例如一些搜索引挚, 可以接受一种按列存贮的格式, 比如:
<row>
COL1=column1 value
COL2=column2 value
......
</row>
为此SQLULDR2增加了三个选项, 分别用于指定行首(rowpre), 行尾(rowsuf), 及列名和列值之间的分隔符(colsep). 如下所示:
rowpre = row prefix string for each line.
rowsuf = row sufix string for each line.
colsep = separator string between column name and value.
和字段分隔符(field)及记录分隔符(record)结合起来, 总共有5种分隔符了, 对于任何一条记录, 其输出顺序如下:
<rowpre>
[<colmn 1 name><colsep>]<column 1 value><field>
[<colmn 2 name><colsep>]<column 2 value><field>
......
[<colmn n name><colsep>]<column n value>
<rowsuf>
<record>
在最后一个列的后面并没有打印字段分隔符(field), 如果需要在最后一个字段后面加上字段分隔符, 可以通过在记录分隔符(record)中实现. 有了这5个灵活的选项后, 就可以生成格式更灵活的文本输出. 比如要按列文本输出:
user=system/oracle
query=select * from scott.dept
file=-
rowpre=<row>0x0a
rowsuf=0x0a</row>0x0a
field=0x0a
record=0x0a
colsep==
使用SQLULDR2导出时, 就生成了如下格式的文本, 可能就是一些搜索引挚或NOSQL所需要的格式.
<row>
DEPTNO=10
DNAME=ACCOUNTING
LOC=NEW YORK
</row>
<row>
DEPTNO=20
DNAME=RESEARCH
LOC=DALLAS
</row>
......
比如最近流行的jason文件格式, 我也可以考虑进去, 或者这5个选项是不是已经支持了. 加上上一篇的自定义转义符处理, 输出功能已经相当强劲了.


Recent Comments