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

参考:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 bcpsqlcmd 导入数据,您需要遵循以下步骤: 1. 创建数据表:在 SQL Server 数据库创建一个数据表,该表将用于存储导入的数据。 2. 准备数据文件:将要导入的数据保存到一个文本文件,每行表示一条记录,字段值之间用分隔符分隔。 3. 确定分隔符:确定数据文件用于分隔字段值的分隔符。 4. 使用 bcp 命令或 sqlcmd 命令导入数据:使用以下命令之一导入数据: - bcp 命令:使用 bcp 命令从数据文件导入数据到 SQL Server 数据库的表。该命令使用以下语法:bcp database.schema.table in datafile -S servername -U username -P password -c -t separator - sqlcmd 命令:使用 sqlcmd 命令从数据文件导入数据到 SQL Server 数据库的表。该命令使用以下语法:sqlcmd -S servername -d database -U username -P password -i scriptfile 在这些命令,您需要替换以下参数: - database:要导入数据的数据库名称。 - schema:要导入数据的表所在的架构名称。 - table:要导入数据的表名称。 - datafile:包含要导入的数据的文件的路径和文件名。 - servername:SQL Server 实例的名称。 - username:连接到 SQL Server 的用户名。 - password:连接到 SQL Server 的密码。 - separator:数据文件用于分隔字段值的分隔符。 以上是使用 bcpsqlcmd 导入数据的基本步骤和命令。您可以根据需要进行调整或添加其他参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值