应用举例与说明

导入数据

  • 普通导入:
oimpexp -A 1 -F "/oscar/data/test.txt" -E "," -V "\\n" -H localhost -D OSRDB -U SYSDBA -P szoscar55 -p 2003 -S SYSDBA -T TEST

-A指定导入方式,1为导入;

-F指定数据文件

-E指定列分隔符为逗号

-V指定行分隔符为回车

-H指定数据库主机IP(可以为localhost)

-D指定数据库名称为OSRDB

-U指定用户名为SYSDBA

-P指定密码为szoscar55

-p 指定端口号为2003

-S 指定表的模式名

  • 指定列顺序导入
oimpexp -g "(b text,a text)" -F text.txt -T TEST -V "\\r\\n" -E "\|" -B 30 -A 1 -H localhost -D OSRDB -U SYSDBA -P szoscar55 -p 2003 -S SYSDBA

如果想改变文本中数据和列的对应关系,可以指定-g参数。-g "(c text,b text,atext)"指定文本第一列数据导入到列c中,第二列数据导入到列b中,第三列数据导入到列a中。

  • 如果文本中用"null"表示空值:
oimpexp -n -F text.txt -T TEST -V "\\r\\n" -E "\|" -B 30 -A 1 -H localhost -D OSRDB -U SYSDBA -P szoscar55 -p 2003 -S SYSDBA

如果数据中使用null表示空值,如image2,需要指定参数-n,工具发现null串后自动导入空值。

  • 如果文本为标准的CSV格式时:
oimpexp -c "\\"" -F text.txt -T TEST -V "\\r\\n" -E "\|" -B 30 -A 1 -H localhost -D OSRDB -U SYSDBA -P szoscar55 -p 2003 -S SYSDBA

如2.4中说明,导入导出CSV时指定转义字符-c。

  • 导入定长文本:
oimpexp -F imptest1.tbl -T TEST -d 3 -V "\\r\\n" -B 30 -A 1 -H localhost -D OSRDB -U SYSDBA -P szoscar55 -p 2003 -S SYSDBA -t "format.fat"
  • 导入定长文件且包含文件名:
oimpexp -f -F imptest1.tbl -T TEST -d 3 -V "\\r\\n" -B 30 -A 1 -H localhost -D OSRDB -U SYSDBA -P szoscar55 -p 2003 -S SYSDBA -t "format.fat"

导入定长文件需要使用-t参数,-t参数表示格式文件,格式文件中指定了每一列数据的长度,具体请参阅2.3格式文件说明。

  • 导入指定列对应关系或默认值
oimpexp -fc "(1,3,10,(100))" -tc "(5,4,2,1)"

导入时可以使用-fc -tb参数,指定文件中的某些列和表中某些列的对应关系,或者设置一些列的默认值,两个参数中的列号采取一一对应的关系。上例中的含义是:将文件中的1,3,10列导入到表的5,4,2列中,并将100做为默认值导入第一列中。

  • 导入时忽略错误继续导入,并保存错误信息
oimpexp -I -e 20000

导入时如果工具遇到错误,则会退出,使用-I参数可以设置忽略错误并继续导入,并将错误信息保存。-e参数和-I参数配合使用,指定最大忽略错误个数,当超过这个值则报错退出。

  • 导入忽略指定列
oimpexp -filter "(1,100)"

导入时,往往会遇到首列是序号,或者不希望将默写列导入的情况,可以指定-filter对列进行过滤。例如表有98列,数据有100列,希望过滤掉第1列和第100列,则可以使用-filter参数进行过滤。

  • 解密导入数据
oimpexp -j "A11111111111111a"

-j 表示解密导入。

A11111111111111a 表示加密密钥。

导入时,文件中的数据必须是加密导出的数据并且解密密钥要和导出时加密密钥一致。

  • 开启字符集转换功能导入
oimpexp -Y "UTF-8"

导入时要确保指定的字符集与文件字符集一致。

导出数据

  • 导出单表数据
oimpexp -A 2 -F "/oscar/data/outdata.txt" -E "," -V "\n" -c "\"" -B 30 -H localhost -D OSRDB -U SYSDBA -P szoscar55 -p 2003 -S SYSDBA -T TEST

-A 2表示导出。

  • 导出查询结果
oimpexp -F /oscar/data/outdata.txt -E , -V "\n" -B 30 -A 2 -H localhost -D OSRDB -p 2003 -U SYSDBA -P szoscar55 -S SYSDBA -Q "SELECT * FROM TEST WHERE STIME BETWEEN '2009-08-27 00:00:00' AND '2009-08-27 23:59:59';"

使用-Q参数导出查询结果,-Q内指定SQL查询语句,如语句中没有指定模式名,默认OSCAR使用模式名SYSDBA,KSTORE使用模式名KSTORE,此时使用-S,-T参数无效。

  • 导出数据带有空串
oimpexp -n

如果表数据中含有空值,导出时可以使用-n,这样空值会使用null串表示。再次导入的时候,也需要指定-n,当工具发现null串时会对该列导入空值。

  • 加密导出数据
oimpexp -j "A11111111111111a"

-j 表示加密导出。

A11111111111111a表示加密密钥。

  • 开启字符集转换功能导出
oimpexp -Y "UTF-8"

"UTF-8"表示导出到文件的字符集。