代码之家  ›  专栏  ›  技术社区  ›  DPSSpatial

如何使用具有正确字符编码的python读取SQL文件?

  •  5
  • DPSSpatial  · 技术社区  · 8 年前

    基于几个例子( here , here )我可以使用psycopg2从python中读取并希望运行一个SQL文件(该文件有200行,虽然运行很快,但我不想在python文件中维护)。

    以下是读取和运行文件的脚本:

    sql = open("sql/sm_bounds_current.sql", "r").read()
    
    curDest.execute(sql)
    

    但是,当我运行脚本时,会引发以下错误:

    Error: syntax error at or near "drop"
    LINE 1: drop table dpsdata.sm_boundaries_current_dev;
    

    如您所见,脚本中的第一行是删除一个表,但我不确定为什么要读取额外的字符,而且似乎无法找到解决方案,在读取文件时可能会设置文件的编码。

    1 回复  |  直到 8 年前
        1
  •  5
  •   DPSSpatial    8 年前

    建立 this post 处理编码和字节顺序标记,这就是我的问题所在。

    解决方案是从编解码器导入OPEN,这允许在OPEN上使用编码选项:

    import codecs
    from codecs import open
    
    sqlfile = "sql/sm_bounds_current.sql"
    sql = open(sqlfile, mode='r', encoding='utf-8-sig').read()
    curDest.execute(sql)
    

    看起来效果很好!