1. perl unload utf-8 Oracle
  2.  
  3. [oracle@oadb sbin]$ sqlplus / as sysdba
  4.  
  5. SQL*Plus: Release 11.2.0.4.0 Production on 星期四 11 17 18:03:12 2016
  6.  
  7. Copyright (c) 1982, 2013, Oracle. All rights reserved.
  8.  
  9. 连接到:
  10. Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
  11. With the Partitioning, OLAP, Data Mining and Real Application Testing options
  12.  
  13. SQL> select userenv('language') from dual;
  14.  
  15. USERENV('LANGUAGE')
  16. ----------------------------------------------------
  17. SIMPLIFIED CHINESE_CHINA.AL32UTF8
  18.  
  19. SQL> select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
  20.  
  21. PARAMETER
  22. ------------------------------
  23. VALUE
  24. --------------------------------------------------------------------------------
  25. NLS_CHARACTERSET
  26. AL32UTF8
  27.  
  28. [oracle@oadb sbin]$ echo $LANG
  29. en_US.UTF-8
  30.  
  31. #!/usr/bin/perl
  32. use DBI;
  33. my $dbName = 'hrdb';
  34. my $dbUser = 'nc';
  35. my $dbUserPass = 'xx';
  36. my $dbh = DBI->connect("dbi:Oracle:$dbName", $dbUser, $dbUserPass) or die "can't connect to database ";
  37. my $table_name= "$ARGV[0]";
  38. my $hostSql = qq{select COLUMN_NAME from dba_tab_columns where table_name='$table_name'};
  39. my $UNLOAD_SRC_DBCONN = DBI->connect("DBI:Oracle:".$dbName,$dbUser,$dbUserPass) or die("DB connect error!n");
  40. my $DW_DATA_DT ="";
  41. my $datafile="$table_name.TXT";
  42. use HTTP::Date qw(time2iso str2time time2iso time2isoz);
  43.  
  44. my @lstRlst1;
  45. my @lstRlst;
  46. my ($COLUMN_NAME);
  47. my $selStmt = $dbh->prepare($hostSql);
  48. $selStmt->bind_columns(undef, \$COLUMN_NAME);
  49. $selStmt->execute();
  50. while( $selStmt->fetch() ){
  51. print "$COLUMN_NAME\n";
  52. push (@lstRlst1 ,$COLUMN_NAME);
  53. }
  54. $selStmt->finish;
  55. $dbh->disconnect;
  56. my @lstRlst = reverse (@lstRlst1);
  57. ##########################################
  58. #=================全局变量区==========================#
  59. if ($#ARGV <0){
  60. print "请输入一个表名参数";
  61. exit(-1);
  62. }
  63. sub printlog
  64. {
  65. my ($LogInfo)= @_;
  66. my $CurrTime = time2iso(time()); # 当前时间
  67. if(!defined($LogInfo) ){$LogInfo="";}
  68. my $StrLog="【${CurrTime}】 \t ${LogInfo} \n";
  69.  
  70. print $StrLog;
  71. #print LOGFILE $StrLog;
  72. }
  73.  
  74. my $exportOracleSql="SELECT "; #数据导出的sql
  75. for (my $m=0;$m<@lstRlst + 0 ;$m++){
  76. if ($m != @lstRlst + 0 - 1){
  77. $exportOracleSql = "$exportOracleSql trim($lstRlst[$m])".", "
  78. }
  79. else{
  80. $exportOracleSql = "$exportOracleSql trim($lstRlst[$m])"}
  81. print "$exportOracleSql\n";
  82. }
  83. my $exportOracleSql="$exportOracleSql from $dbUser.$table_name";
  84.  
  85. sub Exportdata{
  86.  
  87. printlog "开始导出数据!";
  88. my $exportsql=$exportOracleSql;
  89. if($exportsql eq "error"){
  90. return -1;
  91. }
  92. my $format_sql="alter session set nls_date_format='yyyy-mm-dd'";
  93. my $stmt=$UNLOAD_SRC_DBCONN->prepare($format_sql);
  94. unless ($stmt){
  95. printlog "\n执行prepare SQL语句出错:\n";
  96. printlog $DBI::errstr;
  97. return -1;
  98. }
  99. $stmt->execute;
  100. if ($UNLOAD_SRC_DBCONN->err) {
  101. printlog "\n执行SQL语句出错:\n";
  102. printlog $DBI::errstr;
  103. return -1;
  104. }
  105. $stmt=$UNLOAD_SRC_DBCONN->prepare($exportsql);
  106. unless ($stmt){
  107. printlog "\n执行prepare SQL语句出错:\n";
  108. printlog $DBI::errstr;
  109. return -1;
  110. }
  111. $stmt->execute;
  112. if ($UNLOAD_SRC_DBCONN->err) {
  113. printlog "\n执行SQL语句出错:\n";
  114. printlog $DBI::errstr;
  115.  
  116. return -1;
  117. }
  118. my $row=0;
  119. my $size=0;
  120. my $curtime;
  121.  
  122. my $writeflagsql;
  123. my $tmpstr="";
  124. $row=0;
  125. my $m=0;
  126. open(DATAFILE,">", $datafile) || die (print "Open DATA file failed!!!\n");
  127. while(my $Rows = $stmt->fetchrow_arrayref){
  128. $m=0;
  129. $tmpstr="";
  130. foreach(@$Rows){
  131. $tmpstr=$tmpstr.$Rows->[$m]."|";
  132. $m++;
  133. }
  134. print DATAFILE $tmpstr.$DW_DATA_DT."\n";
  135. $row++;
  136. if(($row%10000) == 0){
  137. printlog "已导出数据$row条!";
  138. }
  139. }
  140.  
  141. $stmt->finish;
  142. # print FLAGFILE $datafile,"\n";
  143. # print FLAGFILE $row,"\n";
  144. close(DATAFILE);
  145. # close(FLAGFILE);
  146.  
  147. $curtime=time2iso(time());
  148. printlog "数据已成功导出!";
  149. printlog "一共导出数据${row}条";
  150.  
  151. return 1;
  152.  
  153. }
  154. Exportdata

perl unload utf-8 oracle 数据库的更多相关文章

  1. perl unload gbk oracle 数据库

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

  2. CentOS以及Oracle数据库发展历史及各版本新功能介绍, 便于构造环境时有个对应关系

    CentOS版本历史 版本 CentOS版本号有两个部分,一个主要版本和一个次要版本,主要和次要版本号分别对应于RHEL的主要版本与更新包,CentOS采取从RHEL的源代码包来构建.例如CentOS ...

  3. Oracle数据库11g基于rehl6.5的配置与安装

    REDHAT6.5安装oracle11.2.4 ORACLE11G R2官档网址: http://docs.oracle.com/cd/E11882_01/install.112/e24326/toc ...

  4. Oracle数据库多语言文字存储解决方案

    一.关于字符集 字符集(也称字元集,Character Set)就是字符编码表(codepage),一个字符不论英文.中文.韩文等在计算机系统内存或硬盘中通过二进制的字节(Byte)保存,这个二进制的 ...

  5. ORACLE数据库管理员的职责

    ORACLE数据库管理员的职责 一.概述 ORACLE数据库管理员应按如下方式对ORACLE数据库系统做定期监控: (1). 每天对ORACLE数据库的运行状态,日志文件,备份情况,数据库的空间使用情 ...

  6. Oracle 数据库导入与出

    Oracle 数据库导入与出 导出( EXPORT )是用 EXP 将数据库部分或全对象的结构和导出 . 导入( 导入( IMPORT )是用 )是用 IMP IMP将 OS 文件中的对象结构和数据装 ...

  7. 选择ORACLE数据库字符集

    如何选择数据库的字符集是一个有争议的话题,字符集本身涉及的范围很广,它与应用程序.客户的本地环境.操作系统.服务器等关系很密切,因此要做出合适的 选择,需要明白这些因素之间的关系.另外对字符集的基本概 ...

  8. MYSQL数据库迁移到ORACLE数据库

    一.环境和需求1.环境 MySQL数据库服务器: OS version:Linux 5.3 for 64 bit mysql Server version: 5.0.45 Oracle数据库服务器: ...

  9. oracle数据库的完整性约束规则详解

    CSDN日报20170303--<百亿互金平台救火故事> 程序员2月书讯 社区有奖问答--一起舞动酷炫的iOS动画 基于Spark的分布式深度学习和认知计算 oracle数据库的完 ...

随机推荐

  1. Ios 给imageview 添加手势没有反应

    道理差不多,简单写写,就是给UIImage所在的UIImageView添加个单击的手势,让用户点击图片时有响应的响应. 有人用个透明的UIButton,感觉有时候不方便.   - (void)view ...

  2. iOS常见的设计模式

    ios开发学习中,经常弄不清楚ios的开发模式,今天我们就来进行简单的总结和探讨~ (一)代理模式 应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现.优势:解耦合敏捷原则 ...

  3. .NET 设计模式之单例模式(一)

    1.简单解释:在创建对象时,无论创建多少次,在堆空间上只会申请一次内存空间. 2.例子(1): public class Singleton{ private static Singleton _si ...

  4. Java工具类:获取long型唯一ID

    直接上代码: import java.text.SimpleDateFormat; import java.util.Date; /** * 获取long型唯一ID */ public class I ...

  5. 基于C语言EOF与getchar()的使用详解

    转自:http://www.jb51.net/article/36848.htm   大师级经典的著作,要字斟句酌的去读,去理解.以前在看K&R的The C Programming Langu ...

  6. C++类继承内存布局(二)

    转自:http://blog.csdn.net/jiangyi711/article/details/4890889# (二 )成员变量 前面介绍完了类布局,接下来考虑不同的继承方式下,访问成员变量的 ...

  7. Google C++编程风格指南

    作者:Hawstein 出处:http://hawstein.com/posts/google-cpp-style-guide.html 前言 越来越发现一致的编程风格的重要性,于是把Google的C ...

  8. linux中python环境搭建及升级后yum不可用解决方案

    1.1 LinuxCentOS 为例.1.1.1 升级 Python(1) 下载 Python 版本$ wget https://www.python.org/ftp/python/2.7.11/Py ...

  9. 【转】Nginx 服务器安装及配置文件详解

    1. 安装nginx 1.1 选择稳定版本 我们编译安装nginx来定制自己的模块,机器CentOS 6.2 x86_64.首先安装缺少的依赖包: # yum -y install gcc gcc-c ...

  10. yii2源码学习笔记(十七)

    Theme 类,应用的主题,通过替换路径实现主题的应用,方法为获取根路径和根链接:yii2\base\Theme.php <?php /** * @link http://www.yiifram ...