2015-01-07 171 views
1

我有幾個bcp問題。 我試圖從一個文本文件加載數據到Sybase ASE 16.0。數據庫在我的本地機器上(Win 7 64位)。 我使用這個命令:Sybase bcp:在BCP數據文件中遇到意外的EOF

bcp dbname.owner.TO_INTS in "SomeInts.txt" -P password -S server -U sa -f "bcp_tblTO_INTS.fmt" -e "bcp.errlog.txt"

這裏是格式文件( 「bcp_tblTO_INTS.fmt」):

10.0 1 1 SYBINT4 0 5 "" 1 SEEMS_THIS_IS_IGNORED

目標表的一列,被定義爲一個INT: CREATE TABLE owner.TO_INTS ( FROM_INT INT NOT NULL ) LOCK ALLPAGES ON 'default' GO

我有兩個問題。

  1. 如果數據中只有四個字符(即數值從1000到9999),bcp將只填充目標表。如果使用該範圍之外的值I得到:

Unexpected EOF encountered in BCP data-file. bcp copy in failed

  • 的值沒有被正確填充:
  • 輸入值(在文件) :1000已填充如(在Sybase):808464433

    輸入值(在文件中):9999填充的作爲(在Sybase):960051513

    文件編碼是ANSI。 EOL字符是LF。

    我在做什麼錯?

    謝謝 Dave。

    +0

    您是否嘗試過沒有格式文件?如果它只有1列,那麼它不應該被需要。只需使用'-c'標誌來表示一個純文本輸入文件。 –

    +0

    太好了,謝謝。使用「-c」修復了一切(如果我製作了EOL字符CRLF)。如果你想添加這個答案,那麼我會確認它。 – Badgerspot

    回答

    1

    由於您的文件只有一列,請移除格式文件並改爲使用-c選項。這將BCP文件字符(明文)模式,並應解決問題。

    如上所述,您可能需要將EOL字符更改爲CRLF