免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2332 | 回复: 7
打印 上一主题 下一主题

sybase导出数据字段过长问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-22 16:48 |只看该作者 |倒序浏览
本帖最后由 chinalyne 于 2011-12-22 16:51 编辑

从Sybase中导出数据,当第三列d.Name字段过长时就会出现结尾处的乱码,哪位有过类似经历,请指导下我这新手啊!感谢~

语句和结果如下:
isql -Uiptvtj -Piptvtj10 -SIPTVTJ_SERVER -w 2000 <<! |sed '1,2d' | sed '/------/d' | sed '/affected)$/d' | sed '/^$/d'| tr -d ' ' | tr  'ZZZ' ' ' | unix2dos  >happy.txt
select distinct c.banner+'|'+
                    a.ID+'|'+
                    d.Name+'|'+
                    rtrim(convert(varchar,d.adddate,102))||'ZZZ'||rtrim(convert(varchar,d.adddate,10)
from a,b,c,d  where ......

结果:
财经VIS|progc000000034963430000002213092|财闻111220多空博弈正是市场的规律-汇市争锋特别节目人民币波动讄2011.12.21   08:00:16
财经VIS|progc000000035302607000002188463|财闻111215新闻背景CPI逐月回落高通胀警报暂时解除-经济工作会议|2011.12.15   16:00:29
财经VIS|progc000000035848944000002194645|财闻111215商务部进口汽车存在倾销补贴产业受实质损害-1对美汽车|2011.12.16   16:31:28
财经VIS|progc000000037172881000002198805|财闻111217终身成就奖联想控股有限公司董事长兼总裁柳传志-CCTV緗2011.12.17   17:20:16
财经VIS|progc000000037450804000002188475|财闻111215新闻背景年底银行大打揽储战冲刺百分之75红线-经济工讄2011.12.15   16:05:19
财经VIS|progc000000038048926000002189141|财闻111215狙击人民币路径日益清晰对冲基金曲线做空中国-人民币讄2011.12.15   18:30:26
财经VIS|progc000000038960013000002198793|财闻111217内蒙古和信园蒙草抗旱绿化公司董事长王召明-CCTV经济葇2011.12.17   17:15:18
财经VIS|progc000000039073250000002213084|财闻111220多空博弈正是市场的规律-汇市争锋特别节目人民币波动讄2011.12.21   08:00:14
财经VIS|progc000000039145649000002194562|财闻111215五大外国车企受震动16款进口豪车或涨价-3对美汽车双反|2011.12.16   16:16:34
财经VIS|progc000000039588132000002188436|财闻111215新闻背景上海深圳杭州楼市打折降价频现市场反应平淡-緗2011.12.15   15:55:28
财经VIS|progc000000039638765000002198799|财闻111217年度大奖天宫一号神州八号交会对接任务团队-CCTV经济葇2011.12.17   17:15:16
财经VIS|progc000000039771067000002198802|财闻111217自主创新奖中国第一汽车集团董事长徐建一-CCTV经济人蝲2011.12.17   17:20:13
军事纪实|progc000000031623293000002212605|回看-吉林边防山江行6-漫漫风雪路上寻战友-军事纪实111219|2011.12.21   06:30:14

论坛徽章:
71
15-16赛季CBA联赛之同曦
日期:2018-08-23 15:41:42辰龙
日期:2014-08-15 09:07:43狮子座
日期:2014-06-03 13:55:33亥猪
日期:2014-06-02 11:17:08巨蟹座
日期:2014-05-06 10:02:03午马
日期:2014-05-04 08:18:27亥猪
日期:2014-04-29 11:11:32技术图书徽章
日期:2014-04-24 15:51:26技术图书徽章
日期:2014-04-17 11:01:53辰龙
日期:2014-04-15 12:45:46亥猪
日期:2014-04-11 09:06:23射手座
日期:2014-04-01 15:28:10
2 [报告]
发表于 2011-12-23 00:31 |只看该作者

  1. 楼主你先
  2. select distinct c.banner+'|'+
  3.                     a.ID+'|'+
  4.                     d.Name+'|'+
  5.                     rtrim(convert(varchar,d.adddate,102))||'ZZZ'||rtrim(convert(varchar,d.adddate,10)
  6. from a,b,c,d  where ......
  7. 看一下是否有乱码。如果没有的话,那就是你后面的shell出现了问题;
  8.                   如果有的话,先解决SQL的问题
复制代码

论坛徽章:
0
3 [报告]
发表于 2011-12-23 16:12 |只看该作者
谢谢二楼。单独执行sql有同样的问题啊。找不到问题所在啊。

论坛徽章:
71
15-16赛季CBA联赛之同曦
日期:2018-08-23 15:41:42辰龙
日期:2014-08-15 09:07:43狮子座
日期:2014-06-03 13:55:33亥猪
日期:2014-06-02 11:17:08巨蟹座
日期:2014-05-06 10:02:03午马
日期:2014-05-04 08:18:27亥猪
日期:2014-04-29 11:11:32技术图书徽章
日期:2014-04-24 15:51:26技术图书徽章
日期:2014-04-17 11:01:53辰龙
日期:2014-04-15 12:45:46亥猪
日期:2014-04-11 09:06:23射手座
日期:2014-04-01 15:28:10
4 [报告]
发表于 2011-12-24 00:18 |只看该作者

  1. 很有可能你的那个字段是定长的,在insert的时候,字段超长了,被截断了,一个汉字在截断后(两个字节,截走1个),那么这个汉字基本就变量乱码了。
  2. 所以你这个字段在库里就是乱码
复制代码

论坛徽章:
0
5 [报告]
发表于 2011-12-24 00:28 |只看该作者
表中是正常的啊,单独查那个表的时候字段完全显示,多个表关联输出就不行了

论坛徽章:
6
水瓶座
日期:2014-06-04 03:34:37水瓶座
日期:2014-06-17 13:20:31数据库技术版块每日发帖之星
日期:2016-07-09 06:20:00数据库技术版块每日发帖之星
日期:2016-07-17 06:20:00数据库技术版块每日发帖之星
日期:2016-08-01 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
6 [报告]
发表于 2011-12-24 11:07 |只看该作者
先确定一下d.Name的长度是不是60字节?

原因是保存在字段d.Name中的内容有中半个汉字,所以导出来的时候呈现乱码了。

论坛徽章:
6
水瓶座
日期:2014-06-04 03:34:37水瓶座
日期:2014-06-17 13:20:31数据库技术版块每日发帖之星
日期:2016-07-09 06:20:00数据库技术版块每日发帖之星
日期:2016-07-17 06:20:00数据库技术版块每日发帖之星
日期:2016-08-01 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
7 [报告]
发表于 2011-12-24 11:09 |只看该作者
使用 convert(char(10),d.Name) 替换原来的d.Name。 试试。

论坛徽章:
6
水瓶座
日期:2014-06-04 03:34:37水瓶座
日期:2014-06-17 13:20:31数据库技术版块每日发帖之星
日期:2016-07-09 06:20:00数据库技术版块每日发帖之星
日期:2016-07-17 06:20:00数据库技术版块每日发帖之星
日期:2016-08-01 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
8 [报告]
发表于 2011-12-24 11:18 |只看该作者
使用 convert(char(60),d.Name) 替换原来的d.Name。 试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP