zoukankan      html  css  js  c++  java
  • 使用bcp,循环将本地txt文本导入远程sqlserver中

    txt大文件导入远程数据库,使用bcp效率极高,关于bcp的资料比较少,写了个导入的方法,在项目中应用成功,代码如下
    引用空间:
    using System;
    using
     System.Data;
    using
     System.Data.SqlClient;
    using System.Diagnostics;

    private void Page_Load(object sender, System.EventArgs e)
            
    {
                
    // 在此处放置用户代码以初始化页面

                string Conn = "data source=192.168.0.1;initial catalog=Test;user id=sa;password=1";
                SqlConnection sqlConn 
    = new
     SqlConnection(Conn);
                SqlCommand cmd 
    = new
     SqlCommand();
                cmd.Connection 
    =
     sqlConn;
                SqlDataAdapter sda 
    = new
     SqlDataAdapter(cmd);
                sqlConn.Open();
                cmd.CommandText 
    = "Select * from Files"
    ;
                DataSet ds 
    = new
     DataSet();
                sda.Fill(ds);

                
    if(ds.Tables[0].Rows.Count>0
    )
                
    {
                    
    string BcpExec = ""
    ;
                    
    for(int i=0;i<ds.Tables[0].Rows.Count;i++
    )//循环取本地文件名
                    
    {            
                        BcpExec 
    = @"bcp Test..Data in D:\test\"
    ;
                        BcpExec 
    += ds.Tables[0].Rows[i]["path"
    ].ToString();
                        BcpExec 
    += " -S192.168.0.1 -Usa -P1 -c -t,"
    ;//组合bcp命令
                        Response.Write(ExeCommand(BcpExec));//执行bcp命令并显示操作结果
                    }

                }

            }



            
    /// <summary>
            
    /// 执行Cmd命令
            
    ///
     确保已经server上已经安装sql,否则使用不了bcp命令,
            
    ///
     如果没有安装sqlserver需要将bcp.exe拷贝到相应目录(这个条件尚未测试)
            
    /// </summary>

            
    /// <param name="commandText"></param>
            
    /// <returns></returns>

            public static string ExeCommand(string commandText)
            
    {
                Process p 
    = new
     Process();
                p.StartInfo.FileName 
    = "cmd.exe"
    ;
                p.StartInfo.UseShellExecute 
    = false
    ;
                p.StartInfo.RedirectStandardInput 
    = true
    ;
                p.StartInfo.RedirectStandardOutput 
    = true
    ;
                p.StartInfo.RedirectStandardError 
    = true
    ;
                p.StartInfo.CreateNoWindow 
    = true
    ;
                
    string strOutput = null
    ;
                
    try

                
    {
                    p.Start();
                    p.StandardInput.WriteLine(commandText);
                    p.StandardInput.WriteLine(
    "exit"
    );
                    strOutput 
    =
     p.StandardOutput.ReadToEnd();
                    p.WaitForExit();
                    p.Close();
                }

                
    catch(Exception e)
                
    {
                    strOutput 
    =
     e.Message;
                }

                
    return strOutput;
            }

    注:ExeCommand函数执行cmd命令是参考秋枫@Blog http://blog.csdn.net/zhzuo/archive/2004/12/25/229006.aspx
  • 相关阅读:
    flex 均分铺满
    git commit -a -m "M 1、引入mixin,公共样式mixin传参处理;";git push origin master:master
    mixin 在传参中可以出现 参数 在类内部可以定义 作用域
    p:nth-last-child(2)
    display block 是否提倡
    对宽度的控制原则 git commit -a -m "M 1、完成less计算得出图片的均分布局;";git push origin master:master
    体验评分 小程序 优化
    tmp
    after
    通过less 计算 得出图片均分布局
  • 原文地址:https://www.cnblogs.com/cndsn/p/379019.html
Copyright © 2011-2022 走看看