首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel SQL Server数据连接

Excel SQL Server数据连接
EN

Stack Overflow用户
提问于 2012-02-24 01:57:40
回答 1查看 1.1K关注 0票数 0

也许有人能为我的一个问题提供一些见解。

我有一个SQL Server数据库,它每小时接收一次信息,并使用Bulk Insert从存储过程中更新。这一切都很好,但是最终的结果是将这些信息放入Excel。

建立数据连接也运行得很好,直到我尝试了一些计算。导入的数据都格式化为文本。Excel的数字格式不起作用,所以我决定查看数据库中的表。

所有列都设置为varchar,以便批量插入工作,因此我将一些列更改为numeric。在Excel中刷新,计算成功。

经过反复的尝试,我仍然不能让批量插入工作,即使用bcp生成一个格式化文件,它仍然在插入时返回错误。无法将varchar转换为numerical,在进一步搜索后,它仅在一个通常为空的numerical列上失败。

而不是使用VBA导入数据并像这样转换数据,或者为每个导入的值添加零,以便Excel对其进行转换。

欢迎提出任何建议。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-09 00:55:30

感谢您的回复,我曾考虑在Excel中使用=value(),但希望尽量避免使用额外的公式。

我最终能够通过使用bcp实用程序为批量插入生成格式化文件来解决我的问题。虽然让它生成一个文件被证明足够棘手,但下面是我如何生成它的一个示例。

在提升的cmd中:

代码语言:javascript
复制
C:\>bcp databasename.dbo.tablename format nul -c -x -f outputformatfile.xml -t, -S localhost\SQLINSTANCE -T

这为特定表生成了一个xml格式化文件。因为我的表有两个额外的列,而这些列不在源数据中,所以我编辑了XML并删除了它们。它们是唯一and和getdate列。

然后,我更改了Bulk Insert语句,使其使用格式化文件:

代码语言:javascript
复制
BULK INSERT [database].[dbo].[tablename]
FROM 'C:\bulkinsertdata.txt'
WITH (FORMATFILE='C:\outputformatfile.xml',FIRSTROW=3)

使用这种方法,我能够成功地使用numeric和int数据类型。回到Excel,当刷新数据连接时,它能够确定正确的数据类型。

希望这对某些人有帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9418507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档