熊猫to_sql宽表有错误:以"xxx"开头的标识符太长。最大长度为 128。(103) (SQLExecDirectW)



我有一个由232个唯一列组成的数据帧,这些列需要写入SQL表。密钥是看起来像的传感器数据

Index(['DMAnt[-]', 
'DMCst[-]',

...
'WRP[%]', 
'WRD_S[rpm]'],
dtype='object', length=232)

当我试图通过to_SQL函数在SQL中创建表时

df_send.to_sql('Sensor_table', con=engine, if_exists='append', index=False)

我收到以下错误:

ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]The identifier that starts with 'DMAnt[-] FLOAT(53) NULL, DMCst[-] FLOAT(53) N' is too long. Maximum length is 128. (103) (SQLExecDirectW)")

这个错误是不是因为我有很多列而抱怨查询太长?我该如何解决这个问题?

错误是提到SQL Server列名只能是128个字符的限制。您需要将DataFrame列名修改为符合该长度要求。

SQL Server的限制:https://learn.microsoft.com/en-us/sql/sql-server/maximum-capacity-specifications-for-sql-server?view=sql-服务器-ver15

错误消息表示列名太长。将列重命名为稍短的列,使其保持在128个字符以下,错误消息应该会消失。

最新更新