【问题标题】:How to use OpenRowSet to insert data into a blank file?如何使用 OpenRowSet 将数据插入空白文件?
【发布时间】: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


【解决方案1】:

@serhio,我在下面测试了你的sql:

INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Text;Database=D:\TDB;HDR=Yes;', 'SELECT * FROM sys.tables.txt')
select * from sys.tables;

我得到了一些测试结果

  1. 文件名不应包含“.”在里面。 (sys.tables.txt→systables.txt)
  2. HDR(Header Row) 不能在这里使用。(删除它)
  3. txt 文件必须存在。(创建它)
  4. txt 文件中的第一行应该是您的所有列名 源数据。

sql

INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Text;Database=D:\TDB;', 'SELECT * FROM systables.txt')
select * from sys.tables;

systables.txt

name,object_id,principal_id,schema_id,parent_object_id,type,type_desc,create_date,modify_date,is_ms_shipped,is_published,is_schema_published,lob_data_space_id,filestream_data_space_id,max_column_id_used,lock_on_bulk_load,uses_ansi_nulls,is_replicated,has_replication_filter,is_merge_published,is_sync_tran_subscribed,has_unchecked_assembly_data,text_in_row_limit,large_value_types_out_of_row,is_tracked_by_cdc,lock_escalation,lock_escalation_desc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多