首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Sybase >

iso_1的sybase bcp出来的能恢复到cp936的上么?该怎么解决

2012-02-25 
iso_1的sybase bcp出来的能恢复到cp936的上么?如题,我要把一个从iso_1编码的sybase服务器上导出的 bcp文件

iso_1的sybase bcp出来的能恢复到cp936的上么?
如题,我要把一个从iso_1编码的sybase服务器上导出的 bcp文件,导入到cp936编码的sybase服务器上,可以么?
需要加什么参数么?
我用的命令是bpc JCK..tblCorp in /home/sybase/tblCorp.dat -Usa -SSyServer -P -c -t'#'
总是出现以下错误
CSLIB Message: - L0/O0/S0/N36/1/0:
cs_convert: cslib user api layer: common library error: The result is truncated
because the conversion/operation resulted in overflow.

我加上-Jiso_1或-Jcp936还是不行
把表的主键、索引删除也不行

[解决办法]
可以啊, 
1. 首先保证两边的表结构一致, 在导入到新的SERVER的时候, 最好把数据清空.
2. 导出的时候, 直接导出就可以了, 如果含有中文的话, 可以打开数据文件检查一下. 看是否有乱码.
注意一下导出的时候使用的分隔符, 如果数据里面包含分隔符的话, 导入会报错. 
3. 导入的时候, 直接导入就可以了, 
4. 两边的数据库客户端字符集与服务器端的匹配就可以了.
[解决办法]
注意:更改字符集后要重新建立数据库。

1、在isql状态下查看原来数据库字符集使用情况,服务器和客户端的都要查看,方法是:
获得服务器端的字符集情况:
1>sp_helpsort
2>go

输出结果应为:
Character Set = 2, cp850
Code Page 850 (Multilingual) character set.
Sort Order = 50, bin_cp850
Binary Sort Order for Code Page 850 (cp850).

获得客户端字符集情况:
1>select @@client_csname
2>go
输出结果应为:iso_1

说明:很多时候应用程序报错,客户端和服务器端字符集不相匹配。


2、将数据库的缺省字符集设置为cp936:
C:\>cd sybase
C:\sybase>cd charsets
C:\sybase\charsets>cd cp936
C:\sybase\charsets\cp936>charset -Usa -Psybase -Sdiren binary.srt cp936

charset –U用户名 –P密码 –SPORTALSERVER服务名(不可为ip) binary.srt cp936

你将看到下面的信息,表示这时你已经成功添加了cp936字符集到你的系统中。
Loading file 'binary.srt'.
Found a [sortorder] section.
This is Class-1 sort order.
Finished loading the Character Set Definition.
Finished loading file 'binary.srt'.
1 sort order loaded successfully

3、接着是将添加的cp936设置为你的缺省值。方法是:
C:\sybase\charsets\cp936>isql -Usa -Psybase -Sdiren
1> select name,id from syscharsets
2> go
ascii_8 0
iso_1 1
cp850 2
bin_iso_1 50
bin_cp850 50
bin_cp936 50
cp936 171
这样知道你的cp936的ID号是171

4、将server的数据库缺省的字符集设置为cp936
1> sp_configure 'default character set id',171
2> go
In changing the default sort order, you have also reconfigured SQL Server's default character set.
Parameter Name Default Memory Used Config Value Run Value
------------------------------ ----------- ----------- ------------ -----------
default character set id 1 0 171 2
(1 row affected)
Configuration option changed. Since the option is static, Adaptive Server must be rebooted in order for the change to take effect.
(return status = 0)

5、重新启动服务器两次(参考使用DOS命令net start SYBSQL_diren)。第一次启动报错“服务器SYBSQL_diren不能启动,请检查它的配置”很正常,第二次正确启动,表明你的设置成功了。

6、在DOS下用edit修改客户端缺省字符集文件c:\sybase\locales\locales.dat
c:\sybase\locales\>edit locales.dat
首先找到[NT]操作系统分组,然后定位到该分组最后一行“local = default, us_english, iso_1”,将其修改为:“local = default, us_english, cp936”。
参考步骤1,确认服务器端和客户端字符集均已修改正确。

7、在Sybase Central中,重新建立新的空数据库,仔细规划好生产数据库数据设备和日志设备的大小。

热点排行