Python 执行 SQL 的脚本:创建视图时在 SQL 文本中保留换行符

Python script that executes SQL: Preserve line breaks in SQL text when creating a view

我在 PyScripter (Windows) 中有一个 Python script 运行,我用它在 Oracle 数据库上执行 SQL。 SQL 创建视图。

import sys
import arcpy
arcpy.env.workspace = sys.path[0]
egdb_conn = arcpy.ArcSDESQLExecute(r"Database Connections\Connection1.sde")
sql_statement = """

CREATE OR REPLACE VIEW ROAD_VW AS
SELECT
    NAME
    ,FROM_
    ,TO_
FROM
    USER1.ROAD

"""
egdb_return = egdb_conn.execute(sql_statement)
print "Complete."

脚本成功在数据库中创建视图。

问题是数据库视图定义中的换行符似乎只在某些程序中有效(可见),在其他程序中无效。如果我访问视图定义(比如 - MS Access 或 ArcGIS Desktop),复制它,然后粘贴它,会发生这种情况:

换行符可见于:

SELECT
    NAME
    ,FROM_
    ,TO_
FROM
    USER1.ROAD
  1. 堆栈溢出
  2. Microsoft Word
  3. PyScripter

换行符中不可见:

SELECT        NAME        ,FROM_        ,TO_    FROM        USER1.ROAD
  1. 记事本
  2. MS Access >> SQL 编辑器
  3. ArcGIS Desktop >> 创建视图

我能否格式化 SQL 文本,以便在执行它以创建视图时保留视图定义的换行符(当 SQL 定义文本用于其他程序时)?

正如@Sudipta Mondal 所暗示的,我需要将 \n 转换为 \r\n:

sql_statement = sql_statement.replace('\n', '\r\n')


相关资源:

Difference between \n and \r?

Replace \n with {something else}