SQL Server 如何使用OpenRowSet在空白文件中插入数据?

vsmadaxz  于 2022-11-21  发布在  其他
关注(0)|答案(1)|浏览(191)

如何使用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无法从链接服务器“(null)"的OLE DB访问接口“MICROSOFT.JET.OLEDB.4.0”获取列信息。
有什么不对吗?
请不要提出 bcp 解决方案,因为已经测试过了,每次都不起作用,所以我现在要测试 openrowset

lyr7nygr

lyr7nygr1#

@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 )

  1. HDR ( 标题 行 ) 不能 在 这里 使用 。 ( 删除 它 )
  2. txt 文件 必须 存在 。 ( 创建 它 )
  3. txt 文件 中 的 第 一 行 应该 是 源 数据 的 所有 列名 。
    • SQL 语言 * *
INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Text;Database=D:\TDB;', 'SELECT * FROM systables.txt')
select * from sys.tables;

格式

    • 系统 表格 . 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

格式

相关问题