• SQL Server通过BCP进行大批量数据导入导出


    预置条件:

    使用sa帐号登录SQL Server Management Studio,右键点击安全性-登录名-数据库用户名属性,设置服务器角色为sysadmin。

    删除已存在的存储过程

    String JOB_BCP_DELETE_SQL = “IF EXISTS (SELECT * FROM sys.objects WHERE name = 'PROCEDURE_BCP_OUT' AND type in (N'P', N'PC'))
     DROP PROCEDURE PROCEDURE_BCP_OUT 
    ”;
    pre = conn.prepareStatement(JOB_BCP_DELETE_SQL);
    pre.execute();

    创建存储过程

    String sql = "set @sql = N'BCP ' + @tableName + ' out ' + @filePath + ' -c -t -U "' + @userName + '" -P "' + @password + '" -S "' + @dbIp + '"'
    ";
    StringBuffer createSqlBuf = new StringBuffer();
    createSqlBuf.append("CREATE PROCEDURE PROCEDURE_BCP_OUT 
    ")
        .append("@dbIp nvarchar(256),
    ")
        .append("@userName nvarchar(256),
    ")
        .append("@password nvarchar(256),
    ")
        .append("@tableName nvarchar(256),
    ")
        .append("@filePath nvarchar(256)
    ")
        .append("AS
    ")
        .append("BEGIN
    ")
        .append("EXEC master.sys.sp_configure 'show advanced options', 1
    ")
        .append("RECONFIGURE
    ")
        .append("EXEC master.sys.sp_configure 'xp_cmdshell', 1
    ")
        .append("RECONFIGURE
    ")
        .append("declare @sql nvarchar(256)
    ")
        .append(sql)
        .append("EXEC master..xp_cmdshell @sql
    ")
        .append("EXEC master.sys.sp_configure 'show advanced options', 1
    ")
        .append("RECONFIGURE
    ")
        .append("EXEC master.sys.sp_configure 'xp_cmdshell', 0
    ")
        .append("RECONFIGURE
    ")
        .append("END");
    String createSql = createSqlBuf.toString();
    pre = conn.prepareStatement(createSql);
    pre.execute();

    执行存储过程

    StringBuffer execSqlBuf = new StringBuffer();
    execSqlBuf.append("EXECUTE PROCEDURE_BCP_OUT 
    ")
        .append("@dbIp=?, ").append("@userName=?, ").append("@password=?, ")
        .append("@tableName=?, ").append("@filePath=?");
    String execSql = execSqlBuf.toString(); 
    pre = conn.prepareStatement(execSql);
    pre.setString(1, dbIp);
    pre.setString(2, dbUserName);
    pre.setString(3, dbPassword);
    pre.setString(4, tableName);
    pre.setString(5, file);
    pre.execute();
  • 相关阅读:
    hdu 1455 N个短木棒 拼成长度相等的几根长木棒 (DFS)
    hdu 1181 以b开头m结尾的咒语 (DFS)
    hdu 1258 从n个数中找和为t的组合 (DFS)
    hdu 4707 仓鼠 记录深度 (BFS)
    LightOJ 1140 How Many Zeroes? (数位DP)
    HDU 3709 Balanced Number (数位DP)
    HDU 3652 B-number (数位DP)
    HDU 5900 QSC and Master (区间DP)
    HDU 5901 Count primes (模板题)
    CodeForces 712C Memory and De-Evolution (贪心+暴力)
  • 原文地址:https://www.cnblogs.com/aaroncnblogs/p/8861831.html
Copyright © 2020-2023  润新知