#!/usr/bin/perl
use DBI;
use Encode;
my $dbName = 'oadb';
my $dbUser = 'vxspace';
my $dbUserPass = 'xxx';
my $dbh = DBI->connect("dbi:Oracle:$dbName", $dbUser, $dbUserPass) or die "can't connect to database ";
my $table_name= "$ARGV[0]";
my $hostSql = qq{select COLUMN_NAME from dba_tab_columns where table_name='$table_name'};
my $UNLOAD_SRC_DBCONN = DBI->connect("DBI:Oracle:".$dbName,$dbUser,$dbUserPass) or die("DB connect error!n");
my $DW_DATA_DT ="";
my $datafile="$table_name.TXT";
use HTTP::Date qw(time2iso str2time time2iso time2isoz);
my @lstRlst;
my ($COLUMN_NAME);
my $selStmt = $dbh->prepare($hostSql);
$selStmt->bind_columns(undef, \$COLUMN_NAME);
$selStmt->execute();
while( $selStmt->fetch() ){
print "$COLUMN_NAME\n";
push (@lstRlst1 ,$COLUMN_NAME);
}
$selStmt->finish;
$dbh->disconnect;
my @lstRlst = reverse (@lstRlst1);
##########################################
#=================全局变量区==========================#
if ($#ARGV <0){
print "请输入一个表名参数";
exit(-1);
}
sub printlog
{
my ($LogInfo)= @_;
my $CurrTime = time2iso(time()); # 当前时间
if(!defined($LogInfo) ){$LogInfo="";}
my $StrLog="【${CurrTime}】 \t ${LogInfo} \n"; print $StrLog;
#print LOGFILE $StrLog;
} my $exportOracleSql="SELECT "; #数据导出的sql
for (my $m=0;$m<@lstRlst + 0 ;$m++){
if ($m != @lstRlst + 0 - 1){
$exportOracleSql = "$exportOracleSql trim($lstRlst[$m])".", "
}
else{
$exportOracleSql = "$exportOracleSql trim($lstRlst[$m])"}
print "$exportOracleSql\n";
}
my $exportOracleSql="$exportOracleSql from $dbUser.$table_name"; sub Exportdata{
printlog "开始导出数据!";
my $exportsql=$exportOracleSql;
if($exportsql eq "error"){
return -1;
}
my $format_sql="alter session set nls_date_format='yyyy-mm-dd'";
my $stmt=$UNLOAD_SRC_DBCONN->prepare($format_sql);
unless ($stmt){
printlog "\n执行prepare SQL语句出错:\n";
printlog $DBI::errstr;
return -1;
}
$stmt->execute;
if ($UNLOAD_SRC_DBCONN->err) {
printlog "\n执行SQL语句出错:\n";
printlog $DBI::errstr;
return -1;
}
$stmt=$UNLOAD_SRC_DBCONN->prepare($exportsql);
unless ($stmt){
printlog "\n执行prepare SQL语句出错:\n";
printlog $DBI::errstr;
return -1;
}
$stmt->execute;
if ($UNLOAD_SRC_DBCONN->err) {
printlog "\n执行SQL语句出错:\n";
printlog $DBI::errstr; return -1;
}
my $row=0;
my $size=0;
my $curtime; my $writeflagsql;
my $tmpstr="";
$row=0;
my $m=0;
open(DATAFILE,">", $datafile) || die (print "Open DATA file failed!!!\n");
while(my $Rows = $stmt->fetchrow_arrayref){
$m=0;
$tmpstr="";
foreach(@$Rows){
$tmpstr=$tmpstr.$Rows->[$m]."|";
$m++;
}
#print DATAFILE encode_utf8($tmpstr.$DW_DATA_DT)."\n";
print DATAFILE $tmpstr.$DW_DATA_DT."\n";
$row++;
if(($row%10000) == 0){
printlog "已导出数据$row条!";
}
} $stmt->finish;
# print FLAGFILE $datafile,"\n";
# print FLAGFILE $row,"\n";
close(DATAFILE);
# close(FLAGFILE); $curtime=time2iso(time());
printlog "数据已成功导出!";
printlog "一共导出数据${row}条"; return 1; }
Exportdata Wide character in print at unload_oracle.pl line 105.
Wide character in print at unload_oracle.pl line 105.
Wide character in print at unload_oracle.pl line 105.
【2016-11-17 19:02:25】 数据已成功导出!
【2016-11-17 19:02:25】 一共导出数据3726条 需要encode_utf8($tmpstr.$DW_DATA_DT)."\n";

perl unload utf-8 oracle Wide character in print at unload_oracle.pl line 105.的更多相关文章

  1. Wide character in print at a2.pl line 返回json 需要encode_utf8

    centos6.5:/root/test#cat a2.pl use Net::SMTP; use LWP::UserAgent; use HTTP::Cookies; use HTTP::Heade ...

  2. Wide character in print at a2.pl line 6.

    jrhapt01:/home/tomcat/test> cat a2.pl my $str="$ARGV[0]"; use Encode; use URI::Escape; ...

  3. Wide character in print at hcp.pl line 21.

    jrhmpt01:/root# cat -n hcp.pl 1 use LWP::UserAgent; 2 use Encode; 3 $ua = LWP::UserAgent->new; 4 ...

  4. 为什么出现Wide character in print at a14.pl line 41

    [root@wx03 ~]# cat a14.pl use Net::SMTP; use LWP::UserAgent; use HTTP::Cookies; use HTTP::Headers; u ...

  5. php 返回json 解析 报Wide character in print

    php 返回json: zabbix:/var/www/html/DEVOPS/Home/Lib/Action# vim EquipmentAction.class.php <?php head ...

  6. perl unload utf-8 oracle 数据库

    perl unload utf-8 Oracle [oracle@oadb sbin]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Produc ...

  7. perl unload gbk oracle 数据库

    perl unload gbk Oracle 数据库 use Encode; if ( $#ARGV < 0 ){ print "请输入一个文件\n"; exit(-1); ...

  8. error: converting to execution character set: Invalid or incomplete multibyte or wide character

    交叉编译.c文件,遇到如下问题 arm-linux-gcc -o show_lines show_lines.c -lfreetype -lm show_lines.c:199:19: error: ...

  9. Can't locate find.pl in @INC (@INC contains: /etc/perl xxxx) at perlpath.pl line 7.

    /********************************************************************** * Can't locate find.pl in @I ...

随机推荐

  1. Android画廊控件之Gallery

    Gallery:用来显示图片列表.可以左右拖动. 如图: 图片取自http://www.cnblogs.com/menlsh/archive/2013/02/26/2934434.html 在Gall ...

  2. 浅析ASP.NET的状态保持

    ASP.NET的状态保持:1.viewstate:隐藏域,记录服务器端控件的状态,适用于页面不关闭的情况下多次与服务器交互,页面自己给自己传值:文本框的改变事件.IspostBack也依赖viewst ...

  3. /etc/shadow

    这样,用户帐户本身在 /etc/passwd 中定义.Linux 系统包含一个 /etc/passwd 的同伴文件,叫做 /etc/shadow.该文件不像 /etc/passwd,只有对于 root ...

  4. Javase中多态polymorphic的简单介绍

    -------------多态-----------------  (1)面向对象三大核心思想:    1.封装 2.继承 3.多态 (2)多态定义:父类的引用指向子类的对象.   (3)引用指的是父 ...

  5. OC - 7.Foundation框架的简单介绍

    OC语言-07-OC语言-Foundation框架   结构体 NSRange/CGRange 用来表示一个元素在另一个元素中的范围,NSRange等价于CGRange 包含两个属性: NSUInte ...

  6. JS中==和===的区别

    1.对于string,number等基础类型,==和===是有区别的 1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等 2)同类型比较,直接进 ...

  7. Codevs 1697 ⑨要写信

    1697 ⑨要写信 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 传送门 题目描述 Description 琪露诺(冰之妖精)有操控冷气的能力.能瞬间冻结小东西,比 ...

  8. Headfirst设计模式的C++实现——工厂方法(Factory Method)

    引用原书的一句话:所有的工厂模式都用来封装对象的创建,工厂方法模式通过让子类决定该创建的对象是什么来达到封装的目的. Pizza类及其派生类与上一例相同 PizzaStore.h #ifndef _P ...

  9. centOS 6.4 vsftpd 安装配置

    参考  http://blog.csdn.net/wocjj/article/details/7418944   配置说明 http://www.cnblogs.com/redhatlinux/arc ...

  10. 《sed的流艺术之四》-linux命令五分钟系列之二十四

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...