在 Python 中使用 pyodbc 从 Salesforce 摄取到 Azure SQL 时出现数据类型问题
Data Types problem while ingesting from Salesforce to Azure SQL using pyodbc in Python
我正在使用 Python 和 pyodbc 将数据从 Salesforce 提取到 Azure SQL 数据库。
我第一次连接 Salesforce,如下所示:
cnxn = pyodbc.connect('DRIVER={Devart ODBC Driver for Salesforce};User ID=xxx;Password=xxx;Security Token=xxx')
然后导入Salesforce数据,如下图:
cursor = cnxn.cursor()
cursor.execute("select * from X where Y > 'VALUE'")
row = cursor.fetchall()
之后,我与目标 Azure SQL 数据库建立了第二个连接,如下所示:
cnxn = pyodbc.connect('DRIVER={Devart ODBC Driver for SQL Azure};Server=xxx;Database=xxx;Port=1433;User ID=xxx;Password=xxx')
到目前为止,一切正常。但是当我尝试插入从 Salesforce 获得的输出(在可变行中)时,我遇到了数据类型问题,我们可以从中引用:
- 制表“\t”
- 回到行号(在Azure中SQL数据库是CHAR(13) + CHAR(10) +)
- 包含引用的字符(例如“大数据技术”)
以下是我启动插入查询的方式:
cursor.executemany('INSERT INTO dbo.Account (Column_a,Column_b,Column_c) VALUES (?,?,?,?)', row)
cursor.commit()
这是我遇到的第一个错误:
pyodbc.Error: ('HY000', '[HY000] [Devart][ODBC][Microsoft SQL Azure]Statement(s) could not be prepared.\r\nMust declare the scalar variable "@_39".\r\nLine 1: Specified scale 14 is invalid. (0) (SQLExecDirectW)')
这个问题显然是由
中的缺陷引起的
Devart ODBC Driver for SQL Azure
使用微软的
ODBC Driver 17 for SQL Server
解决了问题。
我正在使用 Python 和 pyodbc 将数据从 Salesforce 提取到 Azure SQL 数据库。
我第一次连接 Salesforce,如下所示:
cnxn = pyodbc.connect('DRIVER={Devart ODBC Driver for Salesforce};User ID=xxx;Password=xxx;Security Token=xxx')
然后导入Salesforce数据,如下图:
cursor = cnxn.cursor()
cursor.execute("select * from X where Y > 'VALUE'")
row = cursor.fetchall()
之后,我与目标 Azure SQL 数据库建立了第二个连接,如下所示:
cnxn = pyodbc.connect('DRIVER={Devart ODBC Driver for SQL Azure};Server=xxx;Database=xxx;Port=1433;User ID=xxx;Password=xxx')
到目前为止,一切正常。但是当我尝试插入从 Salesforce 获得的输出(在可变行中)时,我遇到了数据类型问题,我们可以从中引用:
- 制表“\t”
- 回到行号(在Azure中SQL数据库是CHAR(13) + CHAR(10) +)
- 包含引用的字符(例如“大数据技术”)
以下是我启动插入查询的方式:
cursor.executemany('INSERT INTO dbo.Account (Column_a,Column_b,Column_c) VALUES (?,?,?,?)', row)
cursor.commit()
这是我遇到的第一个错误:
pyodbc.Error: ('HY000', '[HY000] [Devart][ODBC][Microsoft SQL Azure]Statement(s) could not be prepared.\r\nMust declare the scalar variable "@_39".\r\nLine 1: Specified scale 14 is invalid. (0) (SQLExecDirectW)')
这个问题显然是由
中的缺陷引起的Devart ODBC Driver for SQL Azure
使用微软的
ODBC Driver 17 for SQL Server
解决了问题。