予期しないEOFは、bcpリーダーがより多くのデータを期待しているときにEOFを検出したことを意味します。このEOFは次のようになります。
(1)実際の物理的なファイルの終わり(読み取られるバイト数はこれ以上ありません)。これは、データのフォーマットが間違っていることを意味します。不完全なレコードがないか、ファイルの終わり近くを確認してください。
また
(2)Windowsでは、テキストモードでファイルを読み取るプログラムは、CS-DOSを介してCP / Mから継承されたCtrl-Z(別名^Z別名\'x1A'別名SUB別名SUBSTITUTE)に関する古い規則を尊重します。端末だけでなく、任意のファイルから読み取るときのファイルの終わりマーカー。これにはPythonが含まれます。動作はCstdlibによって決定されます。データ内の「\x1A」を確認してください。
コメントへの応答を読みやすい方法で更新します。
Notepad ++では、[表示]/[記号を表示]/[すべての文字を表示]を実行して、通常とは異なる文字を表示することができます。Ctrl-Fを押し、[検索する文字列]ボックスに\ x1aと入力し、[検索]パネルの[拡張]ラジオボタンを選択すると、検索できます。
または、Pythonを少し使用して、最初のCtrl-Zの行番号を取得することもできます。
bytes = open('bcp.dat', 'rb').read()
zpos = bytes.find('\x1a')
# if zpos is -1, no Ctrl-Z in file
print 1 + bytes[:zpos].count('\r\n')
.datがどこで作成されたかは関係ありません。意図しないCtrl-Zは、任意のオペレーティングシステムで作成されたファイルのどこでも発生する可能性があります。重要なのはテキストファイルとして読み取られている場所です-Windows?バン!