Microsoft SQL Server 数据量大 导入导出 问题汇总

问题一:

今天拿到一份有近百万条数据的Excel要导到数据库里面,我先在本地(2014)用自带Excel,然后生成脚本文件去服务器(2008)上执行;文件SQL打开不了。

解决方法:

用自带的sqlcmd工具

第一步:Win+R 键入:cmd 命令,开启命令行工具;

第二步:键入:cd C:\Program Files\Microsoft SQL Server\100\Tools\Binn (具体目录路径跟你安装的SQL位置有关)

第三步:键入:sqlcmd -S . -U sa -P 123 -d test -i data.sql

参数说明:-S 服务器地址 -U 用户名 -P 密码  -d 数据库名称 -i 脚本文件路径 

转自:https://www.cnblogs.com/zhangjbravo/p/7059099.html

更多参考:https://msdn.microsoft.com/zh-cn/library/ms162773(v=sql.120).aspx

 

问题二:

今天拿到一个数据库备份文件,服务器上还原一下,一百来万条数据,要导出成Excel,一套 任务 => 导出数据 => SQL->Excel 2007 很好导出到65536条报错,一查是Excel限制 。到本地试试还是不行,那么写存储过程用分页导出多张子表,每个子表65536条数据。好烦不想写。用bcp吧。

解决方法:

第一步:运行下列语句设置安全配置

EXEC sp_configure 'show advanced options', 1

RECONFIGURE

EXEC sp_configure 'xp_cmdshell', 1

RECONFIGURE

没设置会报错“SQL Server 阻止了对组件 'xp_cmdshell' 的 过程'sys.xp_cmdshell' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'xp_cmdshell'。有关启用 'xp_cmdshell' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器". ”

第二步:EXEC master..xp_cmdshell 'bcp "use -B select * from -T queryout -E -c -S -U -P

参数说明:-B 数据库名称  -T 表名  -E Excel路径  -S 服务器地址  -U 用户名  -P 密码 

例子:EXEC master..xp_cmdshell 'bcp "use LJ_PD_IPR_INTERFACE select * from PatentInformation" queryout D:\11.xls -c -S"." -U"sa" -P"123456"'

 

问题三:

用bcp,导出的数据中含有“【”、“】”等特殊字符时,最后Excel的样式会错乱。又寻到个工具:SQL Prompt

 

下载地址:https://www.red-gate.com/products/sql-development/sql-prompt/

使用方法很简单,速度也很快,先查询出所需要的数据,右击左上角的open in excel就好了

 

转载于:https://www.cnblogs.com/SilverWolf/p/8917254.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
网站开发中经常遇到大量数据导入数据库,或者数据库导出到文档中。本文结合项目实际,总结出比较实用的Excel文件导入数据库数据库导出Excel表格中,供大家学习参考。 一、 数据库表与Excel表结构 1、 Excel表结构 2、 数据库Fms_Employee表结构 注意:要导入Excel表列必须与数据库Fms_Employee表的属性列一一对应。 3、 前台设计      <asp:Button ID="InfoImport" Text="导入" runat="server" 二、 Excel表数据导入到MS SQL数据库 protected void InfoImport_Click(object sender, EventArgs e) { try { string fileName = FileUpload1.FileName; string savePath = Server.MapPath(("~\\upfiles\\")+fileName); FileUpload1.SaveAs(savePath); string strCon = "Provider=Microsoft.Jet.Oledb.4.0;"+"Data Source="+savePath+";Extended Properties='Excel 8.0;HDR=yes;IMEX=1'"; OleDbConnection odc=new OleDbConnection(strCon); odc.Open(); string strCmd=string.Format("select * from [{0}$]","sheet1"); OleDbDataAdapter oda=new OleDbDataAdapter(strCmd,odc); DataSet ds=new DataSet(); oda.Fill(ds,"sheet1"); foreach(DataRow dr in ds.Tables[0].Rows) { InsertToSql(dr); } Response.Write("[removed]alert('导入成功!');[removed]"); } catch { Response.Write("[removed]alert('导入Excel文件格式不正确!');[removed]"); } } private void InsertToSql(DataRow dr) { SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["ConnectionDataBase"]); string employeeID = dr[0].ToString(); string domainName = dr[1].ToString(); string name = dr[2].ToString(); string roleID = dr[3].ToString(); string departID = dr[4].ToString(); string department = dr[5].ToString(); con.Open(); string sql = "insert into Fms_Employee Values('" + employeeID + "','" + domainName + "','" + name + "','" + roleID + "','

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值