试想一下,如果一个文件5G、10G甚至更大。如何将它迅速地加载到数据库指定的表呢?我们看看Sybase IQ是如何迅速地将表的数据加载到数据库的。

数据文件格式:

1440,2011-01-09 00:00:00,1,珠海,1,C网,8612345678222,221943,1,12175,1,12,14426467,1191632,9,
1440,2011-01-09 00:00:00,1,珠海,1,C网,8612345678222,968852,1,82077,1,7,2430696,134921,5,
1440,2011-01-09 00:00:00,1,珠海,1,C网,8612345678222,936862,3,10847,1,5,4585323,362630,5,
1440,2011-01-09 00:00:00,1,珠海,1,C网,8612345678222,308796,2,5614,2,12,14401931,1202200,11,
1440,2011-01-09 00:00:00,1,珠海,2,固网,861234567000,11058523,6,984391,3,19,12789576,1113565,19,

据以“,”分割。并以“,”结尾。

commit;
lock table iqloadtest in write mode wait '00:05:00';
Set temporary option conversion_error='off';
Set temporary option escape_character='on';
Set temporary option load_memory_mb=256;
Set temporary option timestamp_format='YYYY-MM-DD HH:mm:ss';--解决时间格式问题
LOAD TABLE iqloadtest
(
col1 ',',
col2 ',',
col3 ',',
col4 ',',
col5 ',',
col6 ',',
col7 ',',
col8 ',',
col9 ',',
col10 ',',
col11 ',',
col12 ',',
col13 ',',
col14 ',',
col15 ',\x0a',--最后一个字段顺便过滤掉换行符0a
 filler(1)--在此例子中加了此条语句最后一行数据不被加载
)
FROM '/home/test/test.load'
ESCAPES OFF
QUOTES OFF
IGNORE CONSTRAINT ALL 0
MESSAGE LOG '/home/test/iqMsg.log'
ROW LOG '/home/test/iqRow.log'
ONLY LOG ALL
Notify 50000
WITH CHECKPOINT ON;
commit;

结论:如果行结束符后面带了分隔符的话必须用此种方式。否则无法加载。
如果行结束符后面不带分隔符的话可以用filler(1)这种方式

IQLoad 会遇到的问题。
1、 ODBC 与 JDBC 的默认设置不一样。 JDBC 需要加上
Set temporary option escape_character='on';

2、当数据中存在null时的解决方法

commit;
lock table iqloadtest in write mode wait '00:05:00';
Set temporary option conversion_error='off';
Set temporary option escape_character='on';
Set temporary option load_memory_mb=256;
Set temporary option timestamp_format='YYYY-MM-DD HH:mm:ss';
LOAD TABLE iqloadtest
(
字段1 '分隔符' null('NULL'),
字段2 '分隔符' null('NULL'),
col15 '分隔符\x0a' null('NULL'),
 filler(1)--在此例子中加了此条语句最后一行数据不被加载
)
FROM '/home/test/test.load'
ESCAPES OFF
QUOTES OFF
IGNORE CONSTRAINT ALL 0
MESSAGE LOG '/home/test/iqMsg.log'
ROW LOG '/home/test/iqRow.log'
ONLY LOG ALL
Notify 50000
WITH CHECKPOINT ON;
commit;

Sybase IQ如何将大文件数据迅速加载到数据库的更多相关文章

  1. Java实现http大文件流读取并批量插入数据库

    1.概述 请求远程大文本,使用流的方式进行返回.需要设置http链接的超时时间 循环插入到List中,使用mybatis-plus批量插入到mysql中 2.需求 两台服务器 大文件放到其中一台服务器 ...

  2. [Python]-pandas模块-机器学习Python入门《Python机器学习手册》-02-加载数据:加载文件

    <Python机器学习手册--从数据预处理到深度学习> 这本书类似于工具书或者字典,对于python具体代码的调用和使用场景写的很清楚,感觉虽然是工具书,但是对照着做一遍应该可以对机器学习 ...

  3. Unity3d通用工具类之数据配置加载类

    今天,我们来讲讲游戏中的数据配置加载. 什么是游戏数据加载呢?一般来说游戏中会有场景地图. 按照国际惯例,先贴一张游戏场景的地图: 在这张地图上,我们可以看到有很多正六边形,正六边形上有树木.岩石等. ...

  4. class文件简介及加载

    Java编译器编译好Java文件之后,产生.class 文件在磁盘中.这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码.JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中, ...

  5. mysql 5.6 后热数据的加载

    mysql 5.6 后热数据的加载 转自:http://blog.itpub.net/20892230/viewspace-2127469/ 故障现象:在数据库重启后,碰巧遇到业务高峰期,连接数满,导 ...

  6. Spark在处理数据的时候,会将数据都加载到内存再做处理吗?

    对于Spark的初学者,往往会有一个疑问:Spark(如SparkRDD.SparkSQL)在处理数据的时候,会将数据都加载到内存再做处理吗? 很显然,答案是否定的! 对该问题产生疑问的根源还是对Sp ...

  7. Arc Engine下数据的加载处理

    1.加载Shapefile数据 IWorkspaceFactory pWorkspaceFactory; IFeatureWorkspace pFeatureWorkspace; IFeatureLa ...

  8. 如何使用 require.js ,实现js文件的异步加载,避免网页失去响应,管理模块之间的依赖性,便于代码的编写和维护。

    一.为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载.下面的网页代 ...

  9. WinForm ListView虚拟模式加载数据 提高加载速度

    将VirtualMode 属性设置为 true 会将 ListView 置于虚拟模式.控件不再使用Collection.Add()这种方式来添加数据,取而代之的是使用RetrieveVirtualIt ...

随机推荐

  1. hdu1507二分匹配

    1 //hdu1507 挺不错的题 #include<stdio.h> #include<string.h> #define INF 99999999 struct node ...

  2. Mysql-日期转换

    一.字符串转日期 下面将讲述如何在MYSQL中把一个字符串转换成日期: 背景:rq字段信息为:20100901 1.无需转换的: SELECT * FROM tairlist_day WHERE rq ...

  3. (原)String类两种实例化的区别

    String有两种实例化方式,一种是通过直接赋值的方式,另外一种是使用标准的new调用构造方法完成实例化. public class StringDemo { public static void m ...

  4. POJ2531Network Saboteur(DFS+剪枝)

    Network Saboteur Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10391   Accepted: 4990 ...

  5. _stdcall与_cdecl(了解)

    调用约定(Calling Convention)是指在程序设计语言中为了实现函数调用而建立的一种协议.这种协议规定了该语言的函数中的参数传送方式.参数是否可变和由谁来处理堆栈等问题.不同的语言定义了不 ...

  6. ci中如何得到配置的url

    $this->load->helper('url'); 然后,你可以用它查询并返回设置在config.php文件中的site和/或base URL: echo site_url(); ec ...

  7. Struts2拦截器Interceptor执行顺序理解

    invocation.invoke()方法是拦截器框架的实现核心,通过确定invocation.invoke()方法执行位置,来实现Action执行前后处理操作,在invocation.invoke( ...

  8. 常用 SQL 语句

    一.SQL中新增列或者说添加字段的语法: alter table 表名 add 列名 数据类型 二.例如:在表texttable中添加一列字符型字段colnew: alter table textta ...

  9. MapReduce使用JobControl管理实例

    import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.fs.Path; impo ...

  10. 移动web调式利器---Rosin研究

    移动web调式利器---Rosin研究 阅读目录 关于Rosin Rosin在Fiddler中如何使用 回到顶部 一:关于Rosin Rosin是Fiddler的一个插件,它能接受页面中的JS的con ...