将 100 万条记录从 SQL Server 插入 BigQuery 表,通过 CDATA odbc 驱动程序链接
Posted
技术标签:
【中文标题】将 100 万条记录从 SQL Server 插入 BigQuery 表,通过 CDATA odbc 驱动程序链接【英文标题】:Insert 1 million records from SQL Server to BigQuery table, linked via CDATA odbc driver 【发布时间】:2015-10-29 18:00:47 【问题描述】:我需要将 100 万条(甚至更多)记录从 SQL Server 表插入到 BigQuery 表中,该表作为“链接服务器”通过 CDATA odbc driver 存在于 SQL Server 中,其中包含远程守护进程 (documentation)。
另外,源表可能没有包含行数、ID 等的列。
目前,我可以使用此驱动程序将 每秒 1 条记录插入 BigQuery,使用以下查询:
INSERT INTO [GBQ].[CDataGoogleBigQuery].[GoogleBigQuery].[natality]
SELECT *
FROM [natality].[dbo].[natality]
GO
但是对于这么多记录,例如 100 万或更多,这是一个非常低的性能。
我相信有一种解决方法,可以让我加快插入过程。提前谢谢同志们。
【问题讨论】:
【参考方案1】:创建一个 SSIS 包以从 [natality].[dbo].[natality] table to [GBQ].[CDataGoogleBigQuery].[GoogleBigQuery].[natality] table
执行快速加载。简而言之,在ETL过程中使用快速加载来批量加载。
高级方法:
在 SSIS 中,从工具箱中选择一个数据流任务。
单击数据流任务并选择编辑。
在“数据流”页面上,选择 您的 ole db 源和 ole db 目标的工具箱。将 2 个任务链接在一起。
为 [natality].[dbo].[natality]
设置 ole db 源连接。
为 [GBQ].[CDataGoogleBigQuery].[GoogleBigQuery].[natality]
设置您的 ole db 目标。确保选择了快速加载到表设置。
完成后,执行包。
【讨论】:
这是否在内部进行单个批量上传到 bigquery? 我做到了,正如你提到的,不幸的是,没有任何改变:它仍然每秒加载 1 条记录。有什么想法吗? 我不知道如何像这样链接 bigtable,如果我不在基地,我很抱歉。我很了解 bigquery api,通常您要做的是将单个文件上传到 bigquery,其中包含您要在表中插入的所有行(然后等待作业完成,如果您需要知道它何时完成)。一旦你通过了授权(oauth2)部分,它的小代码就可以编写了。 在与您的问题有关的另一个 *** 问题上找到了可能的答案。不确定您是否尝试过这种方法。链接:***.com/questions/13133693/… 另外,这里是指向 Google Cloud 页面的链接,我相信回答所引用问题的人。链接:cloud.google.com/bigquery/loading-data-into-bigquery @ZigMandel 正如 CDATA 支持刚刚给我写的那样,这个宝贝 this 和这个 documentation 可以很快完成【参考方案2】:@Blasterdick 评论中的链接不再可用,但 CData 网站的最新版本有效:http://www.cdata.com/drivers/bigquery/ssis
BatchMode 是控制批量查询的属性名称,默认启用。
【讨论】:
以上是关于将 100 万条记录从 SQL Server 插入 BigQuery 表,通过 CDATA odbc 驱动程序链接的主要内容,如果未能解决你的问题,请参考以下文章
使用存储过程从 sql server 快速读取百万条记录,并使用 java 和 spring boot 将其写入 csv