bcp sqlcmd bulkinsert中unicode問題,Unexpected EOF encountered in BCP data-file

senario

進入sqlcmd用:out xxx生成數據文件,由於sqlcmd export to file 默認情況下中文亂碼,故用-u(unicode)開關

@echo off & setLocal EnableDelayedExpansion
:start
@SET DB=AdventureWorks2012
sqlcmd  -d%DB% -b -iscript.sql -v pa="out.txt" pwd="%cd%" -W -h-1
TIMEOUT 3
sqlcmd  -d%DB% -b -iout.txt -W -h-1 -s^| -u--<strong><strong>由於sqlcmd export to file 默認情況下中文亂碼,故用-u(unicode)開關</strong></strong>
pause
GOTO start
到此,中文正常顯示

SQLCMD ERROR

Starting copy...
SQLState = S1000, NativeError = 0
Error = [Microsoft][SQL Server Native Client 11.0]Unexpected EOF encountered in BCP data-file

0 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total     : 1

原因 datafile in Unicode format 用-c開關導入數據會出錯


查看


打開-w開關,導入成功


小結

用bcp  in or out data時

  1. ANSI         --> -c
  2. UNICODE-->-w

Using BULK INSERT to Bulk Import Unicode Character Data

USE AdventureWorks2012;
GO
BULK INSERT myTestUniCharData 
   FROM 'C:\myTestUniCharData-w.Dat' 
   WITH (
      DATAFILETYPE='widechar', --unicoode
      FIELDTERMINATOR=','
   ); 
GO
SELECT Col1,Col2,Col3 FROM myTestUniCharData;
GO

參考:

發佈了88 篇原創文章 · 獲贊 5 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章