Sybase IQ如何将大文件数据迅速加载到数据库

  试想一下,如果一个文件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; 

 

时间: 2024-10-23 19:56:45

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

求助,在线等,java+ssm项目初始化数据问题解析json文件加载到数据库,跪谢!

问题描述 求助,在线等,java+ssm项目初始化数据问题解析json文件加载到数据库,跪谢! 服务器能不能在启动的时候加载json文件 然后把数据 加载到数据库!就是启动服务器,然后启动成功后,数据库要看到有基本数据的效果,可以实现吗?在线等!跪谢!

WinForm ListView 大数据提高加载速度的方法 虚拟模式加载

将VirtualMode 属性设置为 true 会将 ListView 置于虚拟模式.控件不再使用Collection.Add()这种方式来添加数据,取而代之的是使用RetrieveVirtualItem(Occurs when the ListView is in virtual mode and requires a ListViewItem.)和CacheVirtualItems两个事件,单独使用RetrieveVirtualItem也可以,CacheVirtualItems这个事件主要是

从Mysql中下载大附件时,一直加载,是不是需要设置一下mysql的配置文件

问题描述 从Mysql中下载大附件时,一直加载,是不是需要设置一下mysql的配置文件 文件可以上传成功,速度也还可以,小附件下载时速度还不错,但是大附件(大于10M)下载时一直 显示加载,是不是需要在mysql中设置一下配置文件 解决方案 大于10M的文件你都存数据库中啦?不慢才怪呢,建议楼主以后存储流媒体文件.等一下大的文件,只把文件所在本地的链接存入数据表中就可以了

Js表格万条数据瞬间加载实现代码

 一条数据创建一行,如果数量大的时候,一次性要加载完数据的话,浏览器就会卡上半天,下面有个不错的方法,大家可以参考下 Js表格,万条数据瞬间加载    在Ajax动态加载数据的实际应用中,大家都习惯了一种思维方式:一条数据创建一行.  于是如果数量大的时候,一次性要加载完数据的话,浏览器就会卡上半天    受Flex的DataGrid控件的启发,在Flex的DataGrid控件中,展示数据的方法并不是有多少条数据就创建多少行,它最多只创建你在界面上所看到的十几二十行(假设为n行),如果数据多的话

ios-IOS&Android开发:如何从大量未加载的数据中加载一定量的数据到列表中

问题描述 IOS&Android开发:如何从大量未加载的数据中加载一定量的数据到列表中 绝大多数新闻资讯类应用开发过程中都会遇到这么一个问题: 规定每次从服务器最多只能获取20条数据,第一次刷新获取了20条最新的数据,添加到列表中,过一段时间有了30条未刷新的记录,这下问题来了:第二次刷新时是获取最新的20条还是接着第一次获取之后的20条数据放在列表前面?前者会导致列表中间空缺一部分数据,后者问题是要多刷新几次才能把所有数据获取到. 有过相关开发经验的大神们来说说你们的解决方案. 解决方案 刷新

javascript 文件的同步加载与异步加载

原文:[转载]javascript 文件的同步加载与异步加载   HTML 4.01 的script属性 charset: 可选.指定src引入代码的字符集,大多数浏览器忽略该值. defer: boolean, 可选.延迟脚本执行,相当于将script标签放入页面body标签的底部,js脚本会在document的DOMContentLoaded之前执行.除IE和较新版本的Firefox外,其他浏览器并未支持. language: 已废弃.大部分浏览器会忽略该值. src: 可选.指定引入的外部

pl sql存储过程-为后台执行加载数据 可以加载到临时表 却不能加载到表区间(调用存储过程)

问题描述 为后台执行加载数据 可以加载到临时表 却不能加载到表区间(调用存储过程) CREATE OR REPLACE PROCEDURE PRC_DET_01026_DAY( IN_DAY IN NUMBER --统计日期yyyymmdd ON_RtnCode OUT NUMBER --返回值,正确为0,错误为ORACLE的错误代码 ON_RtnMsg OUT VARCHAR2 --返回信息,正确为'NO ERROR'否则为ORACLE的出错信息 ) AS -----程序固定变量,不要修改--

Android实现基于滑动的SQLite数据分页加载技术(附demo源码下载)_Android

本文实例讲述了Android实现基于滑动的SQLite数据分页加载技术.分享给大家供大家参考,具体如下: main.xml如下: <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/action_settings" android:orderInCategory="100" android:showAs

Js表格万条数据瞬间加载实现代码_javascript技巧

Js表格,万条数据瞬间加载 在Ajax动态加载数据的实际应用中,大家都习惯了一种思维方式:一条数据创建一行. 于是如果数量大的时候,一次性要加载完数据的话,浏览器就会卡上半天 受Flex的DataGrid控件的启发,在Flex的DataGrid控件中,展示数据的方法并不是有多少条数据就创建多少行,它最多只创建你在界面上所看到的十几二十行(假设为n行),如果数据多的话,在滚动过程中,会从数据中抽取你应该看到的这n行数据,重新展示在已经创建好的那n行控件中. 也就是说,Flex的DataGrid控件