【问题标题】:SQL Server Import Data w/o Linked Server/Import没有链接服务器/导入的 SQL Server 导入数据
【发布时间】:2018-04-13 10:14:53
【问题描述】:

有没有一种方法可以在不使用链接服务器/BULK INSERT/OPENROWSET 等和导入实用程序的情况下将数据从 Excel 或 csv 文件导入 SQL Server 表?

我正在寻找更多可以为我做这件事的 SQL 查询。

我可以使用导入实用程序,但我希望在脚本中使用它。有人有它的 T-SQL 吗?

【问题讨论】:

  • BULK INSERT 和 OPENROWSET 已经是 T-SQL。 docs.microsoft.com/en-us/sql/relational-databases/import-export/… 写脚本就好了。
  • SSIS 会非常简单地做到这一点;为您的 excel/csv 文件创建源连接,然后为您的目标表创建 ODBC 连接。映射列,除非我在您的问题中遗漏了什么,否则您应该很高兴。
  • 有什么例子可以做到这一点?

标签: sql sql-server


【解决方案1】:

兄弟试试这个。这将有助于并扩大您的研发范围。

-- One-time exec--------

EXEC sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE;  
GO  
EXEC sp_configure 'xp_cmdshell', 1;  
GO  
ECONFIGURE;  
GO  
--------------------------

--Query Command
EXEC master.dbo.xp_cmdshell 'type D:\Excel_test.txt'

使用它可以读取文本文件、XML 文件等,office 文件读取不正确,所以需要更多的研发。 这是可行的,你在编码中一切皆有可能。 也可以学习Mssql中的Filegroup。

希望对你有帮助,喜欢的话给我点个赞吧。

【讨论】:

  • 这不起作用...消息 15247,级别 16,状态 1,过程 sp_configure,第 105 行 [批处理开始行 0] 用户无权执行此操作。
  • 先执行,EXEC sp_configure 'show advanced options', 1;去重新配置;执行 sp_configure 'xp_cmdshell', 1;去配置;去
【解决方案2】:

对于这样的事情,您有各种各样的选择。当然,您可以双向移动数据。

将数据导出到 Excel 文件 创建一个名为 testing 的 Excel 文件,其标题与 SQLServerTable 列的标题相同 这是查询: Excel 2003 (.Xls) 文件:

insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\testing.xls;', 'SELECT * FROM [Sheet1$]') select * from SQLServerTable

Excel 2007 (.Xlsx) 文件:

insert into OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=D:\testing.xlsx;', 'SELECT * FROM [Sheet1$]') select * from SQLServerTable

将数据从 Excel 导入新的 SQL Server 表 Excel 2003 (.Xls) 文件:

select * into SQLServerTable FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\testing.xls;HDR=YES', 'SELECT * FROM [Sheet1$]')

Excel 2007 (.Xlsx) 文件:

Select * into SQLServerTable FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=D:\testing.xlsx;HDR=YES', 'SELECT * FROM [Sheet1$]')

将数据从 Excel 导入现有的 SQL Server 表 Excel 2003 (.Xls) 文件:

Insert into SQLServerTable Select * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\testing.xls;HDR=YES', 'SELECT * FROM [Sheet1$]')

Excel 2007 (.Xlsx) 文件:

INSERT INTO SQLServerTable select * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=D:\testing.xlsx;HDR=YES', 'SELECT * FROM [Sheet1$]')

您可以使用 VBA 同样轻松地完成这项工作。

https://www.excel-sql-server.com/excel-sql-server-import-export-using-vba.htm#Excel%20Data%20Export%20to%20SQL%20Server%20Test%20Code

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 2022-06-19
    相关资源
    最近更新 更多