`
axengine
  • 浏览: 147358 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

informix 海量数据load方案

阅读更多

#!/bin/ksh
#===========================================================================
#filename:dbload.sh
#功能:
#从文件导入海量数据到informix数据库中
#主要是解决海量数据导入问题,当直接使用形如:
#load from loadfile.txt insert into tablename;
#导入数据时,如果数据超过几百万条则会使缓存被充满而无法导入
#input: nameDB nameTable dataFile
#注意:
#1.程序需要informix load 支持
#2.数据文件第行应以"|"结尾
#===========================================================================

#参数输入
if [ $# -ne 3 ];then
cat << EOF
Usage: $0 nameDB nameTable dataFile

   nameDB       数据库名
   nameTable   数据库表名
   dataFile     即将导入数据库的数据文件
EOF
exit 1
fi

nameDB="$1" #数据库名
nameTable="$2" #数据库表名
dataFile="$3" #即将导入数据库的数据文件

if [ ! -f "$dataFile" ];then
echo "<ERROR>数据文件[$dataFile]不存在!" | tee -a $errLog
exit 1
fi

tmpStr0=`echo $dataFile | sed "s/\//_/g"`
errLog="${tmpStr0}_E.log" #日志
:>$errLog

delimStr="|" #数据文件中数据分隔符
commitNum=100000 #一次提交的数据条数
canErrNum=1000000 #容许错误的条数

loadCMDFile="load$$.cmd" #load命令文件

tmpFile="`basename $dataFile`.tmp" #临时文件


trap "myExit" 0 1 2 3 9 11 15

myExit()
{

#程序退出前删除临时文件
#删除load命令文件
rm -f $loadCMDFile
rm -f $tmpFile

#如果日志文件是空的删除
if [ ! -f "$errLog" ];then
  return
fi
_tmpNum="`cat $errLog | wc -c`"
_tmpNum="`expr $_tmpNum`"
if [ $_tmpNum -eq 0 ];then
   rm -f $errLog
fi
}

lineNum="`cat $dataFile | wc -l`" #数据行数
lineNum="`expr $lineNum`"
if [ $lineNum -eq 0 ];then
	echo "<ERROR>数据文件[$dataFile]是空的!" | tee -a $errLog
	exit 1
fi

#数据文件数据列数
colNum=`head -n1 $dataFile | awk -F"|" '{print NF}'`
#数据文件中的数据行最后有一个"|"
colNum=` expr $colNum - 1 `


cat << EOF > $loadCMDFile
file "$dataFile" delimiter "$delimStr" $colNum;
insert into $nameTable;
EOF

if [ ! -f "$loadCMDFile" ];then
	echo "<ERROR>load命令文件[$loadCMDFile]不存在!" | tee -a $errLog
	exit 1
fi
:> $tmpFile

dbload -d $nameDB -c $loadCMDFile -l $errLog -n $commitNum -e $canErrNum>> $tmpFile 2>&1
#| tee -a $tmpFile 2>&1
#cat $tmpFile

echo "[提示]数据文件行数: $lineNum"

#获取导入的数据条数
grepStr="Table $nameTable had "
tmpStr=`grep "$grepStr" $tmpFile`
insertNum=0
if [ "$tmpStr" != "" ];then
	for str in $tmpStr
	do
		tmpStr2=`echo $str | grep "^[0-9]*$"` 
		if [ "$tmpStr2" = "" ];then
			continue
		else
			insertNum=` expr $str `
			echo "[提示]总计导入条数: $insertNum"
			errNum=` expr $lineNum - $insertNum `
			if [ $errNum -gt 0 ];then
				echo "[ERROR]导入失败条数: $errNum"
				exit 1
			else
				echo "[OK]导入成功!"
			fi
			break
		fi
	done	
else
	echo "[ERROR]导入失败条数: $lineNum"
	exit 1
fi
 源程序发布者informixchina bbs 新程序有改动。我的生产数据为约:2000W条
分享到:
评论

相关推荐

    Informix High Performance Load用户指南.rar

    《Informix High Performance Load用户指南》是一本专为Informix数据库管理员和开发人员设计的实用手册,它深入探讨了如何高效地加载大量数据到Informix数据库中。Informix是一款高性能的关系型数据库管理系统,广泛...

    Informix High Performance Load用户指南

    **Informix High Performance Load (HPL)** 是 IBM Informix 数据库系统中一个高性能的数据加载工具。它旨在帮助用户快速地将大量数据导入到 Informix 数据库中,从而提高整体的数据处理性能。此工具特别适用于需要...

    Informix_数据刀片开发

    **Informix 数据刀片开发详解** Informix 数据刀片(DataBlades)是 IBM Informix 数据库系统的一个重要特性,它扩展了 Informix 的核心功能,提供了针对特定数据类型和应用需求的专业化处理能力。数据刀片的设计...

    Informix11.5数据压缩和存储优化

    Informix 11.5 数据压缩和存储优化的技术知识涵盖了数据库管理系统(DBMS)的存储成本削减、数据压缩技术的细节以及数据库管理的优化策略。以下详细知识点是基于给定文件的信息进行深入解析: 1. 存储成本不断上升...

    Informix数据相关资料

    Informix提供了多种复制解决方案,如同步复制、异步复制等,以确保数据的冗余和灾难恢复能力。全局事务处理和故障切换机制进一步增强了系统的可用性。 **六、Informix性能优化** Informix提供了各种性能优化工具和...

    Informix数据装卸技术

    ### Informix数据装卸技术详解 #### 一、概述 Informix数据装卸技术是IBM Informix数据库管理系统中的一个重要组成部分,主要用于实现数据的批量导入导出功能。这些技术包括unload/load、unonload/unonload、...

    informix数据库导出数据表结构

    informix数据表的结构导出方法,informix是IBM的数据库

    informix数据库常用备份方法 - 总结

    在 Informix 数据库管理中,备份是保障数据安全的重要环节。本篇文章将深入探讨 Informix 的两种常见备份方法:dbexport 和 0级备份,以及它们各自的优缺点和使用场景。 1. **dbexport 和 dbimport** `dbexport` ...

    informix在线备份工具

    Informix提供了LOAD和UNLOAD语句,它们可以用于数据的导入和导出,且不需独占数据库。LOAD用于将数据从文本文件加载到数据库表中,而UNLOAD则相反,将数据库表的数据卸载到文本文件。通过编写脚本,我们可以利用这...

    Informix错误代码及解决办法

    本文将Informix的所有错误代码的意义及推荐的解决方法汇总,中文txt格式

    Informix 用户例程与数据类型开发指南

    根据提供的文件信息,“Informix 用户例程与数据类型开发指南”这一标题以及描述明确指出了文档的主要内容将围绕IBM Informix数据库系统中的用户定义例程(User-defined Routines)及自定义数据类型展开。尽管具体内容...

    informix数据库导入导出

    在 Informix 数据库中,数据导入导出可以使用 unload 和 load 语句来实现。Unload 语句用于将数据从数据库导出到文本文件,而 load 语句用于将数据从文本文件导入到数据库中。 Unload 语句的基本语法为:unload to ...

    基于Informix+External+Table实现数据快速加载

    而Informix的External Table功能则提供了高性能的ETL(Extract, Transform, Load)解决方案,极大地提升了数据处理的速度和灵活性。 ### 重要概念:Informix External Table #### 定义与特点 - **新特性**:自IDS ...

    informix学习使用手册

    Informix支持多种数据类型和数据库模式,提供灵活的数据存储解决方案。 二、Informix数据库安装与配置 在开始学习Informix之前,了解如何安装和配置数据库系统至关重要。这包括选择合适的安装选项、配置服务器参数...

    informix最快导数据(HPL)

    ### Informix最快导数据(HPL):High Performance Load详解 #### 一、引言 在数据库管理和维护过程中,数据的导入导出是非常常见的操作之一。对于大型数据库系统来说,高效地进行数据导入导出不仅能够提升工作效率...

    Informix数据装卸技术PPT教案.pptx

    本文主要探讨了Informix数据库中的unload/load、Dbload、dbexport/dbimport、HPL以及External table等数据装卸技术。 首先,unload/load是Informix中基本的数据导出和导入工具,它的语法简洁明了。`unload`命令用于...

    IBM_Informix用户定义的例程与数据类型开发者指南.pdf

    根据提供的信息,我们可以推断这份文档是关于IBM Informix数据库系统中的用户定义的例程(User-Defined Routines, UDRs)与用户定义的数据类型(User-Defined Data Types, UDTs)的开发者指南。虽然具体内容较为混乱...

    informix考题informix考题

    Informix数据库系统是一个支持多种数据模型(如关系、对象-关系、时空)的高性能数据库解决方案。它提供了一整套用于数据管理、分析和集成的工具,适用于各种规模的企业,尤其在交易处理、大数据分析和物联网(IoT)...

    informix 12.1官方指南(中文)

    Informix是一款高性能、可扩展的数据库解决方案,广泛应用于企业级数据管理、实时分析以及大数据处理等领域。本指南旨在帮助用户充分利用其功能,提升数据管理和应用开发的效率。 在Informix 12.1版本中,官方指南...

Global site tag (gtag.js) - Google Analytics