0
我有一個關於pd.to_sql()
的輕微問題。我的任務是將excel文件加載到MSSQL數據庫中(導入嚮導不是選項)。我在過去成功使用了sqlalchemy
以及pandas
,但似乎無法解決這個問題。熊貓更改To_SQL列映射
from sqlalchemy import create_engine
import pandas as pd
# Parameters for SQL
ServerName = "SERVER_NAME_HERE"
Database = "MY_NAME_HERE"
Driver = "driver=SQL Server Native Client 11.0"
# Create the connection
engine = create_engine('mssql+pyodbc://' + ServerName + '/' + Database + "?" + Driver)
df1=read_excel('MY_PATH_HERE')
# do my manipulations below and make sure the dtypes are correct....
#... end my manipulations
df2.to_sql('Auvi-Q_Evzio_Log', engine, if_exists='append', index=False)
ERROR:
pyodbc.ProgrammingError: ('42S22', "[42S22] [Microsoft][SQL Server Native
Client 11.0][SQL Server]Invalid column name 'Created On'. (207)
(SQLExecDirectW)")
我的問題是數據庫的模式已經設置,並且不能改變它。我在我的數據框Created On
中有一列,但數據庫中的列名是CreatedOn
。我有一些問題出現的列。有沒有辦法在to_sql
中正確設置映射或模式?文檔中有一個schema
參數,但我找不到有效的示例。
我可以只是改變我的數據框的列名稱以匹配scehma,但我的興趣已被偷窺,否則。
當我運行'db_tab_cols'我得到'sqlalchemy.exc。編程錯誤:(pyodbc.ProgrammingError)('42000',「[42000] [Microsoft] [SQL Server Native Client 11.0] [SQL Server]' - '附近的語法不正確,'它在'Auvi-Q ''特殊字符'\\''也不會修復,但是如果我只是加載整個表db_tab_cols = pd.read_sql(「Auvi-Q_Evzio_Log」,引擎).columns.tolist()'它的工作原理?給出了嗎?其次,t嘿不是同一長度'ValueError:長度不匹配:期望軸有41個元素,新值有45個元素'。有任何想法嗎? – MattR
@MattR,SQL Server數據庫中的真實表名是什麼? – MaxU
Auvi-Q_Evzio_Log。或者更精確[dbo]。[Auvi-Q_Evzio_Log]。編輯:使用全名作品...但顯然仍然是長度不匹配:) – MattR