Syabse的服务器端默认字符集修改方法

在使用Sybase中,经常我们在安装完Sybase后,使用isql或程序插入中文数据后,查询出数据为乱码(中文字符全为‘?’),这是因为客户端的字符集和服务端的字符集不一致造成的,sybase默认安装后默认字符集为:iso_1。通常使用中文字符集在Sybase内为cp936。那么如何设置sybase的字符集呢,下面说明修改服务器端字符集的修改方法:
      以windows操作系统Sybase15为例:      首先说明察看服务端字符集和客户端字符集的方法:

   查看服务器端字符集:
  在isql环境中执行:
  1>; sp_helpsort
  2>; go
 查看客户端字符集:
  在isql环境中执行:
  1>; select @@client_csname
  2>; go


修改服务端字符集方法:
      假设sybase安装目录为$sybase$
      1)转到$sybase$\ASE-15_0\bin目录
      执行命令:charset -Usa -P binary.srt cp936

        或:

       (1).c:\>cd \sybase\charsets\cp936

(2).c:\sybase\charsets\cp936> charset -Usa -Psa_pass -Sserver_name binary.srt cp936


      2) 打开isql,执行下面的SQL查询出cp936对应的id
               select id , name from syscharsets where name = 'cp936'
               go
      假设查询结果为171
      执行下面语句设定默认字符集
               sp_configure 'default char',171 --可能有误,以上面的查询结果为准
               go
       关闭ASE       
               shutdown
               go
      3)重新启动sybase服务两次(第一次启动会失败),启动服务

注意:

1、更改字符集后现有数据库内表的数据会不能访问,所以更改字符集一定要备份数据(用bcp工具导出数据,和把建表的sql备份),所有表的数据要清空

2、用bcp导入时加上字符集参数:

bcp "grocery.dbo.[au_cache]" in "d:\temp\grocery\au_cache.txt" -c -J"cp936" -b"500" -e"d:\temp\grocery_au_cache.out" -U"sa" -P"" -t"#|#" -r"#$#"

3、用bcp导入前sybase应先做如下的配置:c:\>isql -Usa -P

1> use master
       2> go
       1> sp_dboption cqweb,"select into/bulkcopy",true

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值