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
- 堆栈溢出
- Microsoft Word
- PyScripter
换行符在中不可见:
SELECT NAME ,FROM_ ,TO_ FROM USER1.ROAD
- 记事本
- MS Access >> SQL 编辑器
- 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}
我在 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
- 堆栈溢出
- Microsoft Word
- PyScripter
换行符在中不可见:
SELECT NAME ,FROM_ ,TO_ FROM USER1.ROAD
- 记事本
- MS Access >> SQL 编辑器
- 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}