【发布时间】:2013-03-17 21:58:14
【问题描述】:
如何使用OpenRowSet向空白文件插入数据?
我需要从数据库中插入一些选择输出(比如 select * from sys.tables)到一个 txt 文件(比如 D:\TDB)
INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Text;Database=D:\TDB;HDR=Yes;', 'SELECT * FROM sys.tables.txt')
select * from sys.tables;
我明白了
用于链接服务器“(null)”的 OLE DB 提供程序“MICROSOFT.JET.OLEDB.4.0” 返回消息“Microsoft Jet 数据库引擎找不到 对象'sys.tables.txt'。确保对象存在并且您拼写它 名称和路径名正确。”。
消息 7350,第 16 级,状态 2,线路
1 无法从 OLE DB 提供程序获取列信息 链接服务器“(null)”的“MICROSOFT.JET.OLEDB.4.0”。
怎么了?
PS。请不要提出 bcp 解决方案,因为已经测试过并且每次都不起作用,所以我现在要测试 openrowset..
【问题讨论】:
-
当我过去完成它时,我创建了一个带有适当列标题的模板文件,然后使用 xp_cmdshell 创建模板文件的新副本并使用副本转储到和最后使用 xp_cmdshell 将填充的文件重命名为其他文件(我使用时间戳,因为我想每次都保留文件)为下一次执行腾出空间。
-
您确定您的 SQL Server 能够(有权限)写入 D:\TDB 吗?也许 SQLCMD 是您的选择:stackoverflow.com/questions/425379/…
-
虽然您可以使用 xp_commanshell 来完成,但您可能不想而是从前端语言(即:C#)将内容写入文本文件(这不需要古老的要安装 Jet 驱动程序并启用 OpenRowSet)。
标签: sql sql-server sql-server-2005 openrowset