私のテーブルには、私のテーブルのカラムの半分の約24カラムに浮動小数点データ型があります。 24項目を指定したので、ここで挿入文を切り捨てました。Python pymssqlの挿入エラー
csv_data = csv.reader(file('filename.csv'))
for row in csv_data:
cursor.execute('insert into ddreplication (CTX, Mode,...,Max_repl_streams) values (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)', tuple(row))
エラー:
File "pymssql.pyx", line 467, in pymssql.Cursor.execute
(pymssql.c:7561)
pymssql.OperationalError: (8114, 'Error converting data type varchar to float.DB-Lib error message 20018, severity 16:\nGeneral SQL
Server error: Check messages from the SQL Server\n')
イム問題なく罰金を実行している別のスクリプトにはほとんど同じコードを有します。の
出力
"をORDINAL_POSITION BY TABLE_NAME = 'ddreplication' ORDER INFORMATION_SCHEMA.COLUMNS FROM COLUMN_NAME、DATA_TYPE選択" [(u'CTX 'u'int')、(U 'Mode'、u'nvarchar ')、(u'Destination'、u'nvarchar ')、(u'Connection_Host'、u'nvarchar ')、(u'Enabled'、u'nvarchar ')、(u'Low_bandwidth_optimization 'u'nvarchar')、(u'Replication_encrypt '、u'nvarchar')、(u'Replication_propagate_retention_lock '、u'nvarchar')、(u'Local_fs_status '、u'nvarchar')、 u'nvarchar ')、(u'State'、u'nvarchar ')、(u'Error'、u'nvarchar ')、(u'Network_bytes_to_destination'、u'float ')、(u'P (u'Bytes_after_synthetic_optimization '、u'float')、(u'Bytes_after_filtering_by_destination '、u'float')、(u'Bytes_after_low_bandwidth_optimization '、u'Bytes_after_flowing_by_destination'、u'float ' 、u'FreComp_bytes_remaining '、u'float')、(u'Compression_ration '、u'float')、(u'Synced_as_of_time '、u(' u'Bytes_after_local_comp '、u'float')、 (u'Max_repl_streams '、u'nvarchar')]
に
からクエリパラメータを変更することで、ヌルを挿入するために
None
で 'N/A' に置き換えることができますか?さらに、CSVの列の順序がINSERT文の列のリストと正確に一致することを確認しましたか? – Arminius私は自分のデータファイルから2行を付けました。私はCSVの一致の挿入文を列の順序をダブルチェックしました。私はここでスペースのために2行のデータを切り捨てました 19、宛先、mtree://dd9500ausprd01.storage。土曜日8月19日02:33:45、正常、エラーなし、324423376,0,0からの、anz/data/col1/oracle-longterm-fromtm、dd9500ausdr01R.storage.anz、yes、 0,0,0,0,0、該当なし、土8月19日02:33、無制限(回復のみ)、32(デフォルト) 20、source、mtree://d234sdfcom1.storage.com/data/col1 /FROMNSDEVMW,....4624454382864,...,3812323071052,0,22.1,Sat Aug 19 02:46、無制限、32(デフォルト) – Raju
質問を編集して 'cursor.execute(" TABLE_NAME = 'ddreplication' ORDER BY ORDINAL_POSITION ");でCOLUMN_NAMEを選択し、INFORMATION_SCHEMA.COLUMNSからDATA_TYPEを削除します。印刷(cursor.fetchall()) ' –