私はコーディングにかなり新しいです。私は.csvファイルを提供するAPIを介してレポートを取得しています。私はこれをSQLデータベースに貼り付けたいが、いくつかの問題が発生している。エスケープPythonでSQLに書き込むカラム名、csvからpyodbc
私の現在のコードは次のようになります。
読者は、デコードされたcsvファイルです。
pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Incorrect syntax near the keyword 'Group'. (156) (SQLExecDirectW)")
が、私は問題が私の列があることだと思う:
Date | Advertiser | Campaign | Ad Group | etc.
そして、それは多分SQLが認識しているようだ私は、コードを実行すると
columns = next(reader,None)
query = "INSERT INTO table({0}) VALUES ({1})"
query = query.format(','.join(columns),','.join('?'*len(columns)))
cursor = cnxn.cursor()
cursor.execute(query, columns)
for data in reader:
cursor.execute(query, data)
cursor.commit()
は、私はこのエラーを取得します変数としての「広告グループ」の「グループ」。
アイデア?ありがとうございました。
変数として認識しているわけではありません。列名のスペースのために解釈できないということです。 SQL Serverがそれを解釈するには、そのようなカラム名を大括弧で囲む必要があります(そして、大抵の場合、角カッコですべてのカラム名を囲むことをお勧めします)。したがって、 'insert into table (広告主、キャンペーン、広告グループ) 'それはテーブルに挿入する必要があります([日付]、[広告主]、[キャンペーン]、[広告グループ])' – ZLK
@ZLKありがとうございます。それはうまくいった。今、私のデータが文字列として来ているように見える "文字列から日付や時間を変換すると変換に失敗しました。"万一チャンスがあってもすぐに修正できますか? – Jamesdabeard
ええと、それはあなたのデータがどのように見えるかによって異なります。日付フィールドはどのように見えますか? – ZLK