项目中使用到SSIS访问vertica,以下是我使用中总结的一些注意事项:

1.vertica对约束的处理方式与之前的DBMS是不同的。

以上的截图说明,在使用ado.net provider连接vertica进行数据加载的时候,ssis 返回的信息是不准确的。这不是provider的问题,使用odbc时也遇到过类似的问题。

a.在SSIS中图显示全部绿色,表示执行成功,但是到vertica中查询,却没有发现一条记录。

后仔细检查发现,source中的数据违反了vertica中的一个not null 约束,数据没有进去,但是没有报错误提示。 Ssis path中显示343条记录,但是实际上只有341条记录,也有两条记录违反约束。

但是没有错误提示。

b.给表添加了unique(primary)约束,但是数据仍然可以是重复的。vertica官方文档说是vertica这样做加快了处理速度,减少了检查约束造成的性能损失,有利于大量数据加载。

你可以使用ANALYZE_CONSTRAINTS('shcema.tablename')来检查表中的违约情况。

那是不是就需要你保证数据在进入之前是符合条件的?还是需要怎么处理?

2.vertica is case sensitive when compare row content.

Select table_name from tables where table_name='abc' or table_name='Abc'

是不同的

3.vertica中的merge有些限制与mssqlserver是不同的,它不允许使用subquery,也不允许对表中有identity或bind senquence的column存在的时候进行merge.

You should find some workaround to do this when you need merge to load data.

a.not need subquery, you can use temp table.

b.not used identity column, you can remove them , or unbind the column and sequence.

You should know that , when you create a identity column, in fact, vertica create a sequence and bind this to your column.

4.jdbc ,ado.net provider中处理的数据精度和vsql client tool是不一样的,timestamp类型默认可以接受6位以内的微秒精度。但是在jdbc 或 ado.net provider 作为连接的工具中查询时,你是无法看到这些秒后面的小数值的,如果你使用这种字段作为增量加载的依据,你会发现有一定的误差。

我暂时的处理方案是让它转成varchar类型后接收,这样不会丢失精度。

5.vertica支持到sql92标准,很多sql statement 的写法是与sqlserver的Tsql是不同的,以下是我发现的一些常见的不同之处,很多是因为那是TSQL中的实现,不是标准的sql.

 a.top n in tsql, you should change to limit n when you want to restrict the record counts.

 b.you can not delete records in CTE. This is also tsql's specification. 

 c.update and delete statement different with tsql. 

 tsql: 

 delete from a 

 from mytablea as a 

 join mytableb as b 

 on a.column1=b.column1 

 and a.column2=b.column2 

 and …. 

vsql: 

 delete from mytablea 

 where exists 

 (select null from mytableb as b where mytablea.column1=b.column1 

 and a.column2=b.column2 

 ) 

tsql: 

 update a 

 set a.c3=b.c3 

 ,a.c4=b.c4 

 from mytablea as a 

 join mytableb as b 

 on a .c1=b.c1 and a.c2=b.c2 

Vsql: 

Update mytablea 

Set mytablea.c3=b.c3 

,mytablea.c4=b.c4 

From mytableb as b 

Where mytablea.c1=b.c2 

And mytablea.c2=b.c2 

6.vertica中没有bit类型,可以使用布尔替换,它创建索引的时候不能指定desc或asc,它默认是创建为升序的。Identity column不用指定数据类型, 现在会默认为bigint。

Create table mytable(rowid identity(1,1),rowname varchar(10))

SSIS WITH VERTICA的注意事项总结的更多相关文章

  1. SSIS with vertica

    使用ODBC进行连接,因为SSIS中没有直接的ODBC connection,所以使用ADO.NET的连接器. 九分钟才跑了四百来条数据. 这个图反应了SSIS的数据流速度还是可以的,但是瓶颈就在OD ...

  2. 内存中 OLTP - 常见的工作负荷模式和迁移注意事项(二)

    ----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<In-Memory OLTP – Comm ...

  3. 第二篇 Integration Services:SSIS数据泵

    本篇文章是Integration Services系列的第二篇,详细内容请参考原文. 简介SSIS用于移动数据.数据流任务提供此功能.因为这个原因,当介绍SSIS时我喜欢从数据流任务开始.数据流任务的 ...

  4. SSIS 学习(8):事务【转】

    事务,在数据库开发与应用中,发挥了重要的作用,但在Integration Services 包开发过程中,我们还一直没有提到过这个概念,它是不是还是如此,能让各数据库兄弟和睦相处,团结一致,同进退.共 ...

  5. 在SSIS包中使用 Checkpoint从失败处重新启动包

    使用SSIS做ETL的过程中会遇到各种各样的错误,对于一些大数据量的Job失败以后我们不希望重新运行,因为重新运行的时间开销是非常大的,我们只希望从失败的部分开始运行,这样可以省去很多的时间. SSI ...

  6. 微软BI 之SSIS 系列 - 通过 OLE DB 连接访问 Excel 2013 以及对不同 Sheet 页的数据处理

    文章更新历史 2014年9月7日 - 加入了部分更新内容,在文章最后提到了关于不同 Office Excel 版本间的连接问题. 开篇介绍 这篇文章主要总结在 SSIS 中访问和处理 Excel 数据 ...

  7. SSIS 遍历目录,把文件内容导入数据库

    最近接手一个项目,程序的基本框架是:程序A导出数据,以.tsv格式存储,数据列之间以tab间隔:程序B吃文档,把数据导入到数据库中,并把处理过的文档备份/移动到指定的目录中.为了快速开发,程序B设计成 ...

  8. 【译】第二篇 Integration Services:SSIS数据泵

    本篇文章是Integration Services系列的第二篇,详细内容请参考原文. 简介SSIS用于移动数据.数据流任务提供此功能.因为这个原因,当介绍SSIS时我喜欢从数据流任务开始.数据流任务的 ...

  9. HP Vertica Analytics Platform 评測

    1.vertica概念 面向数据分析的数据仓库系统解决方式 2.vertica关键特性 Ø  标准的SQL接口:能够利用已有的BI.ETL.Hadoop/MapReduce和OLTP环境 Ø  高可用 ...

随机推荐

  1. Java NIO服务器端开发

    一.NIO类库简介 1.缓冲区Buffer Buffer是一个对象,包含一些要写入和读出的数据. 在NIO中,所有的数据都是用缓冲区处理的,读取数据时,它是从通道(Channel)直接读到缓冲区中,在 ...

  2. coffeescript 1.8.0 documents

    CoffeeScript is a little language that compiles into JavaScript. Underneath that awkward Java-esque ...

  3. The Towers of Hanoi Revisited---(多柱汉诺塔)

    Description You all must know the puzzle named "The Towers of Hanoi". The puzzle has three ...

  4. 泛函编程(19)-泛函库设计-Parallelism In Action

    上节我们讨论了并行运算组件库的基础设计,实现了并行运算最基本的功能:创建新的线程并提交一个任务异步执行.并行运算类型的基本表达形式如下: import java.util.concurrent._ o ...

  5. Verilog学习笔记设计和验证篇(二)...............同步有限状态机

    上图表示的就是数字电路设计中常用的时钟同步状态机的结构.其中共有四个部分产生下一状态的组合逻辑F.状态寄存器组.输出组合逻辑G.流水线输出寄存器组.如果状态寄存器组由n个寄存器组成,就可以记忆2^n个 ...

  6. smartstore-net

    记录一下,抽空下载源码了研究下

  7. 推荐轻量友好的.NET测试断言工具Shouldly

    Shouldly是一个轻量的断言(Assertion)框架,用于补充.NET框架下的测试工具.Shouldly将焦点放在当断言失败时如何简单精准的给出很好的错误信息. Shouldly在GitHub的 ...

  8. 编写运行R脚本

    1.在后台运行R 1.1 创建file.R文件 1.2 在文件首行键入: #! /path/to/Rscript 1.3 在下面的行中,键入R代码 1.4 保存(记得有png(),jpeg(),... ...

  9. chenxi的js学习笔记

    1.本文主体源自:http://www.cnblogs.com/coco1s/p/4029708.html,有兴趣的可以直接去那里看,也可以看看我整理加拓展的. 2.js是一门什么样的语言及特点? j ...

  10. 使用Reflexil修改类库

    因为公司一个项目需要修改PPS的颜色,于是反编译了PPS的代码发现,作者很不厚道的把所有着色都HardCode在代码里 private static void InsertDefaultSeriesC ...