我的任务是将数据从远程 Microsoft SQL 服务器迁移到 Google Cloud Big Query 表。有问题的数据来自使用公共键连接两个表并使用
WHERE
子句进行过滤。下面给出了作为 Python f 字符串的查询示例:
query = f'''
SELECT dbo.SalesHeaders.*
FROM dbo.Nodes WITH (NOLOCK)
INNER JOIN dbo.SalesHeaders WITH (NOLOCK)
ON dbo.Nodes.node = dbo.SalesHeaders.node
AND CONVERT(DATE , dbo.SalesHeaders.DateTime) BETWEEN '{start.strftime('%Y-%m-%d')}' AND '{end.strftime('%Y-%m-%d')}'
WHERE dbo.Nodes.companytype = 1
'''
当前实现上述任务的方法是通过在我的本地计算机上运行的 Python 脚本。其成功的一个关键部分是安装了 SQL 驱动程序,Python 中的
pyodc
库需要该驱动程序才能建立连接。下面给出一个例子:
import pyodbc
import json
CREDENTIALS = 'blah_blah.json'
def establish_connector():
with open(CREDENTIALS,'r') as file:
credentials = json.load(file)
connector = pyodbc.connect(
'DRIVER={SQL Server};'+\ # uploads.gaap.com,5143
f'SERVER={credentials["server"]};'+\
f'DATABASE={credentials["database"]};'+\
f'UID={credentials["username"]};'+\
f'PWD={credentials["password"]}'
)
return connector
我之前的问题仅限于使用云函数或数据流方法。在这个问题上,我愿意接受更广泛的解决方案。换句话说,请建议并概述能够将数据从给定查询迁移到 Google Cloud Platform 的任何方法,以便最终可由 Big Query 访问。 我已经开始考虑以下可以扩展的内容:
安排虚拟机 (VM) 实例来运行 Python 脚本。这可行,因为可以在虚拟机上安装 SQL 驱动程序。
,然后单击 execute,即可确保作业完美执行,轻松交付预期结果。