You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Google地址验证API验证SQL/Access/Excel中的地址?

使用Google地址验证API验证地址的实现方案(支持SQL/Excel/Access数据源)

完全可行,以下是针对不同数据源的具体实现步骤:

一、Microsoft SQL Server 数据源

SQL Server本身无法直接调用外部API,需要借助脚本或ETL工具实现,这里以Python为例(简单易上手):

  • 步骤1:读取SQL中的地址数据
    用pyodbc库连接SQL Server并读取地址字段:

    import pyodbc
    import requests
    import time
    
    # 配置SQL连接参数
    conn_str = 'DRIVER={ODBC Driver 17 for SQL Server};SERVER=你的服务器名;DATABASE=你的数据库名;UID=用户名;PWD=密码'
    conn = pyodbc.connect(conn_str)
    cursor = conn.cursor()
    # 替换为你的表名和地址字段名
    cursor.execute("SELECT id, address FROM your_address_table")
    address_list = cursor.fetchall()
    conn.close()
    
  • 步骤2:调用Google地址验证API批量验证
    先在Google Cloud控制台申请API密钥并启用Address Validation API,然后编写调用逻辑:

    API_KEY = '*你的Google API密钥*'
    BASE_URL = f'https://addressvalidation.googleapis.com/v1:validateAddress?key={API_KEY}'
    
    for addr_id, raw_addr in address_list:
        if not raw_addr:
            continue
        # 构造请求体,建议拆分地址字段(如街道、城市)以提高准确率
        payload = {
            "address": {
                "addressLines": [raw_addr]
            }
        }
        try:
            response = requests.post(BASE_URL, json=payload)
            response.raise_for_status()
            result = response.json()
            # 提取核心验证结果
            is_valid = result.get('result', {}).get('verdict', {}).get('isValid', False)
            normalized_addr = result.get('result', {}).get('address', {}).get('formattedAddress', '')
            # 可将结果回写SQL或保存到本地文件
            print(f"ID: {addr_id}, 原地址: {raw_addr}, 有效: {is_valid}, 标准化地址: {normalized_addr}")
            # 速率控制,避免触发限流
            time.sleep(1)
        except Exception as e:
            print(f"验证地址ID {addr_id} 失败: {str(e)}")
    
  • 步骤3:回写验证结果到SQL(可选)
    再次连接SQL Server,执行UPDATE语句将验证结果写入对应字段(需提前在表中添加is_valid和normalized_address字段)。

另外也可以用SSIS(SQL Server Integration Services)的脚本任务,通过C#/VB编写API调用逻辑,实现数据的读取、验证、回写全流程。

二、Excel 数据源

推荐用VBA或Power Query实现:

方法1:VBA脚本

  • 打开Excel,按Alt+F11进入VBA编辑器,插入模块
  • 先启用Microsoft XML, v6.0和VBA-JSON模块(需自行下载导入VBA-JSON)
  • 编写验证脚本:
    Sub ValidateExcelAddresses()
        Dim APIKey As String
        Dim baseURL As String
        Dim xmlHttp As Object
        Dim jsonObj As Object
        Dim lastRow As Integer
        Dim i As Integer
    
        APIKey = "*你的Google API密钥*"
        baseURL = "https://addressvalidation.googleapis.com/v1:validateAddress?key=" & APIKey
        Set xmlHttp = CreateObject("MSXML2.XMLHTTP.6.0")
    
        ' 假设地址在A列,结果写入B(是否有效)、C(标准化地址)列
        lastRow = Cells(Rows.Count, "A").End(xlUp).Row
        For i = 2 To lastRow
            rawAddr = Cells(i, "A").Value
            If rawAddr <> "" Then
                On Error Resume Next
                xmlHttp.Open "POST", baseURL, False
                xmlHttp.setRequestHeader "Content-Type", "application/json"
                xmlHttp.send "{""address"": {""addressLines"": [""" & rawAddr & """]}}"
                If Err.Number = 0 Then
                    Set jsonObj = JsonConverter.ParseJson(xmlHttp.responseText)
                    Cells(i, "B").Value = jsonObj("result")("verdict")("isValid")
                    Cells(i, "C").Value = jsonObj("result")("address")("formattedAddress")
                Else
                    Cells(i, "B").Value = "验证失败"
                End If
                On Error GoTo 0
                ' 速率控制
                Application.Wait Now + TimeValue("00:00:01")
            End If
        Next i
    End Sub
    

方法2:Power Query

  • 将地址数据加载到Power Query,添加自定义列,通过M语言调用API(需注意批量调用的速率限制,建议分批处理),解析JSON后提取验证结果。

三、MS Access 数据源

通过VBA实现,步骤类似Excel:

  • 打开Access数据库,按Alt+F11进入VBA编辑器,导入VBA-JSON模块
  • 编写脚本读取表中地址、调用API并更新结果:
    Sub ValidateAccessAddresses()
        Dim APIKey As String
        Dim baseURL As String
        Dim rs As Recordset
        Dim xmlHttp As Object
        Dim jsonObj As Object
    
        APIKey = "*你的Google API密钥*"
        baseURL = "https://addressvalidation.googleapis.com/v1:validateAddress?key=" & APIKey
        Set xmlHttp = CreateObject("MSXML2.XMLHTTP.6.0")
        ' 替换为你的表名,需提前添加is_valid(布尔型)和normalized_address(文本型)字段
        Set rs = CurrentDb.OpenRecordset("SELECT id, raw_address FROM your_access_table")
    
        Do While Not rs.EOF
            rawAddr = rs("raw_address").Value
            If rawAddr <> "" Then
                On Error Resume Next
                xmlHttp.Open "POST", baseURL, False
                xmlHttp.setRequestHeader "Content-Type", "application/json"
                xmlHttp.send "{""address"": {""addressLines"": [""" & rawAddr & """]}}"
                If Err.Number = 0 Then
                    Set jsonObj = JsonConverter.ParseJson(xmlHttp.responseText)
                    rs.Edit
                    rs("is_valid") = jsonObj("result")("verdict")("isValid")
                    rs("normalized_address") = jsonObj("result")("address")("formattedAddress")
                    rs.Update
                End If
                On Error GoTo 0
                ' 速率控制
                Application.Wait Now + TimeValue("00:00:01")
            End If
            rs.MoveNext
        Loop
    
        rs.Close
        Set rs = Nothing
        Set xmlHttp = Nothing
    End Sub
    

关键注意事项

  • 必须在Google Cloud控制台完成API密钥申请和Address Validation API启用,注意API调用有计费规则,批量验证前建议查看定价详情。
  • 严格遵守Google的API速率限制,添加延迟避免被限流封禁。
  • 若地址数据有拆分字段(如街道、城市、邮编),建议拆分传入API,能大幅提高验证准确率。

内容的提问来源于stack exchange,提问作者Angela Marie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 03:34:51