【问题标题】:Loading data from oracle to SQL in multiple tables simultaneously using SSIS使用 SSIS 同时将数据从 oracle 加载到多个表中的 SQL
【发布时间】:2018-08-01 03:29:18
【问题描述】:

enter image description here

我正在创建一个临床数据仓库,因此我正在测试不同的场景。我正在将以下表格从 oracle DB(Attunity 连接器)加载到 SQL DB(OLE DB):

Table1 1.2 GB(300 万行) 表2 20 GB(2亿行) 表 3 100 GB(2.5 亿行) Table4 25 GB(6000 万行)

对于我的初始加载,我计划使用 SSIS,只需从 TABLE1/TABLE2/TABLE3/TABLE4 中选择 *

问题:

是否可以有多个数据流任务来将每个表加载到一个包中。让他们都一起跑。我只是想提高速度。但不知何故,它比我单独运行它要慢。

对于加载完整的表格也是“从表格中选择*”的好方法吗?好像很慢!!

【问题讨论】:

    标签: sql-server ssis sql-data-warehouse


    【解决方案1】:

    您可以执行的并行数据流任务数量与您拥有的处理器内核数减一一样多。也就是说,如果您使用的是八核处理器,则理想的并行任务数是 7 (8 -1 )。只需将不同的序列容器放入其中(不是强制性的,但为了便于阅读)并执行。

    您可以通过调整DelayValidation=true 和使用OPTION ( FAST 10000(or any value,just do some trials)) 等设置来加快数据加载速度,还可以尝试使用DefaultBufferSizeDefaultBufferMaxRows 直到找到正确的设置。此外,如果您打算运行并行 DFT,请检查 MAXDOP 值是否未设置为 1 int。

    而且,永远不要使用SELECT * from table_name。列出列名,* 会增加额外的开销,并且会大大减慢您的查询速度。

    【讨论】:

    • 感谢 AsRa。只是一个进一步的问题。如果我要加载 3 亿行,我应该将它们一起加载吗?从数据源中的表中选择任何列.. 有没有办法有效地做到这一点?
    • 您可以使用Balanced Data Distributor 转换来加快数据加载速度。深入了解它,看看它是否对您有帮助。此外,如果需要,您可以使用WITH( NOLOCK)WITH(TABLOCK)。希望您已经对表格进行了适当的索引。如果其中任何一个回答了您的问题,您可以投票/接受答案。只是说。 ;)
    • "正确索引" 加载数据时,我们不应该在目标表上有任何索引,对吗?你说的是源头吗?我刚刚在阅读索引。对不起,如果它是基本的!!!
    • 是的,来源。同样,如果您选择所有列,也不会产生太大影响。
    【解决方案2】:

    流程 1:使用 SSMA

    您可以使用 SQL Server 迁移助手 (SSMA) 将数据从 Oracle 迁移到 Sql Server 数据库/架构/表。

    这是微软用于数据库迁移的开源工具。

    Microsoft SQL Server 迁移助手 (SSMA) 是一种工具,旨在自动将数据库从 Microsoft Access、DB2、MySQL、Oracle 和 SAP ASE 迁移到 SQL Server。

    过程 2:使用 SSIS

    您还可以使用 SQL Server Integration Services (SSIS) 包进行迁移。

    从导入/导出向导创建 SSIS 包并在命令行中运行该包。

    【讨论】:

      猜你喜欢
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-26
      • 1970-01-01
      相关资源
      最近更新 更多