perl操作sqlserver实现BCP
#!C:\Perl64\bin
#由BCP备份和恢复SQLSERVER指定表
use 5.014;
#加载用户和password型材
my $username ;
my $passwd;
##得到username
my $dir="c:";
$dir=$dir."/";
my $filename="config.txt";
my $keysword="username:";
my $count="50";
my $begincount=index($keysword,":");
my($file);
open(FILEH,$dir.$filename);
while(my $test=<FILEH>){
if((index($test,$keysword))>=0){
my $test1=substr($test,$begincount+1,$count);
#print "$test1";
chomp($username=$test1);
}
}
close(FILEH);
##获取password
my $dir="c:";
$dir=$dir."/";
my $filename="config.txt";
my $keysword="password:";
my $count="50";
my $begincount=index($keysword,":");
my($file);
open(FILEH,$dir.$filename);
while(my $test=<FILEH>){
if((index($test,$keysword))>=0){
my $test2=substr($test,$begincount+1,$count);
#print "$test2";
chomp($passwd=$test2);
}
}
close(FILEH);
print "-------------------------------------------------------------------\n";
print "请首先检查用户和password配置文件config.txt保存路径是否为$dir$filename\n";
print "-------------------------------------------------------------------\n";
print "重要提示:备份表操作请输入0;还原表操作请输入1\n";
print "请输入操作代码:";
chomp(my $inp=<STDIN>);
print "你输入的操作代码为$inp\n";
#推断输入为0即备份操作
if ($inp eq 0){
print 'serverIP:(不输入默觉得localhost)';
chomp(my $a = <STDIN>);
if ($a==''){
$a='localhost';
}else{
print "你输入的serverIP为:$a\n";
}
print 'username:';
chomp(my $b = <STDIN>);
print "你输入的username为:$b\n";
if($b eq $username) {
print "用户通过!\n";
} else {
print "对不起,username错误\n";
exit;
}
print "用户password: ";
chomp (my $readPsw = <STDIN>);
if($readPsw eq $passwd) {
print "password正确!\n";
} else {
print "对不起,password错误\n";
exit;
}
print "重要提示:备份表的表名格式为:test.dbo.t1\n";
print '备份的表:';
chomp(my $d = <STDIN>);
print "你输入的备份的表:$d\n";
print '保存路径:';
chomp(my $e = <STDIN>);
print "你输入的保存路径:$e\n";
if (-e $e){
print "$e已经存在!是否删除?(y删除;n不删除)\n";
chomp(my $i=<STDIN>);
given ($i)
{
when ("y") {
unlink $e;
print "開始备份表!\n";
system (" bcp $d out $e -c -t ',' -m 1 -a 49152 -b 5000 -F 1 -S $a -U $b -P $readPsw ");
}
when ("n")
{
print "-----------备份已经终止-----------\n";
print "指定文件存在,请又一次输入文件名称!\n";
}
default {print "仅仅能输入y或n!\n";}
}
}
else{
{
system (" bcp $d out $e -c -t ',' -m 1 -a 49152 -b 5000 -F 1 -S $a -U $b -P $readPsw ");
}
}
}
#推断输入为1还原操作
elsif($inp eq 1){
print 'serverIP:(不输入默觉得localhost)';
chomp(my $a = <STDIN>);
if ($a==''){
$a='localhost';
}else{
print "你输入的serverIP为:$a\n";
}
print 'username:';
chomp(my $b = <STDIN>);
print "你输入的username为:$b\n";
if($b eq $username) {
print "用户通过!\n";
} else {
print "对不起,username错误\n";
exit;
}
print "用户password: ";
chomp (my $readPsw = <STDIN>);
if($readPsw eq $passwd) {
print "password正确!\n";
} else {
print "对不起,password错误\n";
exit;
}
print '须要还原的表:';
chomp(my $d = <STDIN>);
print "你输入的备份的表:$d\n";
print '备份保存路径:';
chomp(my $e = <STDIN>);
if (-e $e) {
print "你输入的备份保存路径:$e\n";
system (" bcp $d in $e -c -t ',' -m 1 -a 49152 -b 5000 -F 1 -S $a -U $b -P $readPsw ");
}
else {
print "对不起,指定的备份文件$e不存在,请核实!\n";
}
}
else{
print "请參考重要提示!\n";
}
system 'pause';
----config.txt
username:sa
password:passwd123!
----用法
1.将config.txt保存到c文件夹包装
根据实际情况更改文件的内容
2.运行bcp.pl
perl操作sqlserver实现BCP的更多相关文章
- 使用cmd命令行窗口操作SqlServer
本文主要介绍使用windows下的使用cmd命令行窗口操作Sqlserver, 首先我们可以运行 osql ?/ ,这样就把所有可以通过CMD命令行操作sqlserver的命令显示出来 (有图有 ...
- Java连接并操作SQLServer数据库
本人只需在项目中引入sqljdbc4.jar 包即可 ----------------------------------------- 在JAVA中如何连接SQL Server数据库 - hangh ...
- Python操作SQLServer示例(转)
转自:http://www.cnblogs.com/lrzy/p/4346781.html 本文主要是Python操作SQLServer示例,包括执行查询及更新操作(写入中文). 需要注意的是:读取数 ...
- 转:Python操作SQLServer示例
注:此文也是转载,2018年1月发现此文阅读量过万,略感不安.当时只是为了自己存档学习,未粘此文的原始连接.如有侵权,通过即删除,敬请谅解! 从网上找的,估计原文是:Python操作SQLServer ...
- Python操作SQLServer示例
本文主要是Python操作SQLServer示例,包括执行查询及更新操作(写入中文). 需要注意的是:读取数据的时候需要decode('utf-8'),写数据的时候需要encode('utf-8'), ...
- perl操作MongoDB
perl操作MongoDB http://blog.csdn.net/jophyyao/article/details/8223190 Mongodb 的C语言操作 http://blog.csdn. ...
- MongoDB的安装配置、基本操作及Perl操作MongoDB
MongoDB的安装配置.基本操作及Perl操作MongoDB http://www.myhack58.com/Article/60/63/2014/42353.htm
- C#操作SqlServer MySql Oracle通用帮助类
C#操作SqlServer MySql Oracle通用帮助类 [前言] 作为一款成熟的面向对象高级编程语言,C#在ADO.Net的支持上已然是做的很成熟,我们可以方便地调用ADO.Net操作各类关系 ...
- .NET基础操作回顾_使用ADO.NET操作SqlServer使用的类
有些工具用的久了或者有新工具出现后,就慢慢的遗忘了很多,它们从熟悉的变成陌生,当然,对于我们来说不是好事吧. 今天回顾一下ADO.NET用到的MS的基础类库,先上代码(标准的SqlServer操作) ...
随机推荐
- ExtJS学习-------Ext正确Dom操作:Ext.get Ext.fly Ext.getDom
详细实例: (1)创建JSP文件.引入CSS和js文件,加入三个Div <%@ page language="java" import="java.util.*&q ...
- 【VxWorks系列】任务间同步与通信之信号量
信号量是VxWorks提供的最常用,最快速的一种任务间通信机制.VxWorks中信号量有三种:二值信号量,互斥信号量,计数信号量.下面一一介绍这三种信号量的作用与区别. 信号量通常的作用就是是控制任务 ...
- sql优化-提防错误关联
在写sql时,在多表关联时,有时候容易把关联关系写错.一般情况下,该问题比较容易发现,但如果sql较长时,光靠眼力就比较难发现了.今天写了一个脚本,碰到该问题了. 第一版本的脚本如下: select ...
- 【ArcGIS 10.2新特性】ArcGIS 10.2 for Server新特性
ArcGIS forServer相关的很多重大消息,如与Portal for ArcGIS进行了集成,提供对实时数据支持.离线地图使用. 1.与Portal for ArcGIS集成 用户能够配置Po ...
- C#操作Cookie
/* 创建者:菜刀居士的博客 * 创建日期: 2014年09月02号 * 功能:操作Cookie * */ namespace Net.String.ConsoleApplication { ...
- SocketAsyncEventArgs使用解说
原文:SocketAsyncEventArgs使用解说 如果在.NET下写过网络通讯的同学应该感觉不陌生了,有很多刚入门的同学很多都认为这东西可以大大提高处理效能还有就是使用上很不适应.其实使用之前最 ...
- 用Java写个ftp传输类实现文件的上传和下载,用ikvmc转成dll
1.Java类: package com.wjy.ftp.transmission; import java.io.File; import java.io.FileOutputStream; imp ...
- poj3252(数位dp)
题目连接:http://poj.org/problem?id=3252 题意:拆成2进制,在记录0和1的个数 求区间[a,b]中,满足传化成2进制后,0的个数>=1的个数的数字的个数... 分析 ...
- 使用异步HTTP提升客户端性能(HttpAsyncClient)
使用异步HTTP提升客户端性能(HttpAsyncClient) 大家都知道,应用层的网络模型有同步.异步之分. 同步,意为着线程阻塞,只有等本次请求全部都完成了,才能进行下一次请求. 异步,好处是不 ...
- spoj Balanced Numbers(数位dp)
一个数字是Balanced Numbers,当且仅当组成这个数字的数,奇数出现偶数次,偶数出现奇数次 一下子就相到了三进制状压,数组开小了,一直wa,都不报re, 使用记忆化搜索,dp[i][s] 表 ...