之前一直以为Sybase按照一定条件导出数据使用的是Bcpout命令(团队leder说过好几次),结果走了很多弯路,直到仔仔细细地看了bcp命令的所有选项,才发现根本没有将sql语句作为参数这个选项,需要重新想办法。所以这里记录一下按条件从Sybase数据库导出数据的方法:
1.编写导出用的SQL语句,此处使用 |!作为分隔符:
select column1 + '|!' + column2 from table_name noholdlock where column = 'param'
保存为 table.sql
2.使用isql命令执行脚本,并重定向
isql -Uuser -Ppwd < table.sql >result.txt
3.生成的result.txt文件前后均有两个多余的信息,使用sed命令去除即可
sed -i '1d' result.txt
sed -i '1d' result.txt
sed -i '$d' result.txt
sed -i '$d' result.txt
之后就可以快乐地使用bcpin命令,或者sqlldr将数据迁移走了。