使用 PYODBC 在 Vertica 中创建 table 时出现语法错误
Syntax error when creating table in Vertica with PYODBC
我正在尝试使用 PYODBC 将 sql 查询的大列表加载到 Vertica 中的 table 中。这是我的代码:
tablename = DVXTEMP.my_table_name
sql = my_sql_query.strip().strip(';')
samplesize = 1000
createstring = 'CREATE TABLE %s AS %s \n limit %s;' %(tablename, sql, samplesize)
cursor.execute(createstring)
当我在 Toad 中打印 createstring 和 运行 时,它工作正常。当我尝试在 pyodbc 中执行它时,出现以下错误:
'Syntax error at or near "DVXTEMP" at character 1\n (4856) (SQLExecDirectW)'
我们正在使用 Vertica 分析数据库 v7.1.2-6
知道是什么原因造成的吗?
谢谢
1) 你导入了 pyodbc 了吗?
2) 你是从"pyodbc.connect"定义"cursor"吗?
import pyodbc
DB = '[string for dbfile]'
DRV = '[string of which driver you are going to use]'
con = pyodbc.connect('DRIVER={};DBQ={}'.format(DRV,DB))
cursor = con.cursor()
##build SQL code and execute as you have done
尝试SQL命令后可以无误连接。
3) 我将 pyodbc 用于 mdb 文件 (MS Access),我的一些查询不会 运行 除非我在 table/field 名称上将单引号放在双引号之外。
mytbl_1 = "mytbl"
SQL = 'SELECT * FROM ' + mytbl_1
print SQL
打印结果 -> SELECT * FROM mytbl
(失败)
mytbl_2 = '"mytbl"' #single quotes outside of double quote
SQL = 'SELECT * FROM ' + mytbl_2
print SQL
打印结果 -> SELECT * FROM "mytbl"
(此字符串已通过 w/o 错误适用于我的 MDB 文件)
我正在尝试使用 PYODBC 将 sql 查询的大列表加载到 Vertica 中的 table 中。这是我的代码:
tablename = DVXTEMP.my_table_name
sql = my_sql_query.strip().strip(';')
samplesize = 1000
createstring = 'CREATE TABLE %s AS %s \n limit %s;' %(tablename, sql, samplesize)
cursor.execute(createstring)
当我在 Toad 中打印 createstring 和 运行 时,它工作正常。当我尝试在 pyodbc 中执行它时,出现以下错误:
'Syntax error at or near "DVXTEMP" at character 1\n (4856) (SQLExecDirectW)'
我们正在使用 Vertica 分析数据库 v7.1.2-6
知道是什么原因造成的吗?
谢谢
1) 你导入了 pyodbc 了吗?
2) 你是从"pyodbc.connect"定义"cursor"吗?
import pyodbc
DB = '[string for dbfile]'
DRV = '[string of which driver you are going to use]'
con = pyodbc.connect('DRIVER={};DBQ={}'.format(DRV,DB))
cursor = con.cursor()
##build SQL code and execute as you have done
尝试SQL命令后可以无误连接。
3) 我将 pyodbc 用于 mdb 文件 (MS Access),我的一些查询不会 运行 除非我在 table/field 名称上将单引号放在双引号之外。
mytbl_1 = "mytbl"
SQL = 'SELECT * FROM ' + mytbl_1
print SQL
打印结果 -> SELECT * FROM mytbl
(失败)
mytbl_2 = '"mytbl"' #single quotes outside of double quote
SQL = 'SELECT * FROM ' + mytbl_2
print SQL
打印结果 -> SELECT * FROM "mytbl"
(此字符串已通过 w/o 错误适用于我的 MDB 文件)