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

Posted AaronCnblogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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‘))\n DROP PROCEDURE PROCEDURE_BCP_OUT \n”;
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 + ‘\"‘\n";
StringBuffer createSqlBuf = new StringBuffer();
createSqlBuf.append("CREATE PROCEDURE PROCEDURE_BCP_OUT \n")
    .append("@dbIp nvarchar(256),\n")
    .append("@userName nvarchar(256),\n")
    .append("@password nvarchar(256),\n")
    .append("@tableName nvarchar(256),\n")
    .append("@filePath nvarchar(256)\n")
    .append("AS\n")
    .append("BEGIN\n")
    .append("EXEC master.sys.sp_configure ‘show advanced options‘, 1\n")
    .append("RECONFIGURE\n")
    .append("EXEC master.sys.sp_configure ‘xp_cmdshell‘, 1\n")
    .append("RECONFIGURE\n")
    .append("declare @sql nvarchar(256)\n")
    .append(sql)
    .append("EXEC master..xp_cmdshell @sql\n")
    .append("EXEC master.sys.sp_configure ‘show advanced options‘, 1\n")
    .append("RECONFIGURE\n")
    .append("EXEC master.sys.sp_configure ‘xp_cmdshell‘, 0\n")
    .append("RECONFIGURE\n")
    .append("END");
String createSql = createSqlBuf.toString();
pre = conn.prepareStatement(createSql);
pre.execute();

执行存储过程

StringBuffer execSqlBuf = new StringBuffer();
execSqlBuf.append("EXECUTE PROCEDURE_BCP_OUT \n")
    .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();

 

以上是关于SQL Server通过BCP进行大批量数据导入导出的主要内容,如果未能解决你的问题,请参考以下文章

在SQL Server中,如何快速删除大批量数据和进行大批量数据导入?

sqlserver的BCP导入导出

SQL Server批量数据导出导入Bulk Insert使用

SQL SERVER 命令 bcp

将数据批量加载到使用 BCP 从 SQL Server 导出的 Snowflake 时出现 UTF-8 错误

sql server有批量插入和批量更新的sql语句吗