gpt4 book ai didi

sql-server - bcp 命令输出汉字而不是表格

转载 作者:行者123 更新时间:2023-12-04 00:59:13 27 4
gpt4 key购买 nike

我有一个批处理文件,它使用 BCP 将带分隔符的文本文件导入 SQL Server,使用 SQLCMD 运行一些处理,然后通过 输出处理后的数据商业连续性计划。目前它给出的是一串汉字,而不是分隔的文本表。奇怪的是它在两天前就开始工作了,而我没有做任何改变。

我已确认输入 BCP 和 SQL Server 处理步骤有效;保存输出数据的 SQL Server 表是正确的。我还尝试使用 -C 选项按照建议指定代码页 here , 没有变化。

这是有问题的 BCP 代码。为了可读性,我把行分开了,实际代码像往常一样在一行上。它使用 union all 将列名放在文件的顶部。

bcp 
"select
'MRN'
,'column name 2'
,[rest of the column names]
union all
select distinct
iif(r.MRN is not null, cast(r.MRN as varchar), '') as MRN
,[rest of the columns]
from DATA_MANAGEMENT.dbo.Daily_inpat_out as d
left join DATA_MANAGEMENT.dbo.Roster_all_match as r
on d.Subscriber_ID = r.SUB_ID
where
r.MO_DLGTN_STA_DESC = 'DELEGATED'"
queryout "L:\Data_Management\Import_data\Daily_inpat\inpat_out_%mydate%_%mytime%.txt"
-c -S [servername] -U [user] -P [password] -t "|"

这是汉字输出的第一部分,完整的字符串要长得多:

前籎潇瑶偟潲牧浡䝼偒䥟籄䕍䉍剅也䵁籅䥂呒彈䅄䕔卼扵捳楲敢彲䑉呼彘䕓呔义彇䕄䍓

编辑添加:

如评论中所述,问题出现在记事本中,但在其他应用程序(Word、Excel、Notepad++)中显示正确,因此这是一个编码问题。我仍然希望了解问题的原因以及解决方法。

最佳答案

这是由于文本文件前面字节的巧合排列导致记事本认为数据实际上是 Unicode 双字节文本文件。理论上,您可以在其中放置一组字符,让解析器相信数据实际上是 ASCII,但这会改变输出的格式。

按照易于实现的顺序,您最好的选择是:

  • 在每行的前面添加一个或两个空格[不保证]
  • 使用不同的程序查看输出
  • 将数据输出为 HTML,并使用浏览器查看
  • 按原样获取输出,并使用应用程序将其制作成 .pdf 文件
  • 使用报告应用程序生成输出文件

在使用记事本查看文本文件时,没有保证可以防止这种情况发生的方法。您能做的最好的事情就是尽量减少问题,或者对最终输出使用不同的格式。

关于sql-server - bcp 命令输出汉字而不是表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45241509/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com