【问题标题】:SQL SERVER - reading excel files content and transfer to sql database using xp_cmdshellSQL SERVER - 使用 xp_cmdshell 读取 excel 文件内容并传输到 sql 数据库
【发布时间】:2018-02-16 13:13:21
【问题描述】:

当我了解到使用 OPENROWSET 将 excel 数据导入 sql 数据库有缺点时,我感到很震惊,因为它会在传递到数据库之前将单元格的值截断为 255 个长度的字符。我现在正在考虑使用 xp_cmdshell 来读取 excel 文件的数据并将其传输到数据库。但是我对如何做到这一点一无所知。有人可以帮我实现吗?

【问题讨论】:

  • 您可能想查看BCP,此链接会有所帮助 - docs.microsoft.com/en-us/sql/relational-databases/import-export/…
  • 本次讨论中有很多好内容:social.msdn.microsoft.com/Forums/sqlserver/en-US/…
  • 嗨@Abhishek - 我试图在您提供的链接上搜索我的查询,但未能找到我需要的套件。我还查看了 JohnLBevan 提供的链接,但没有一个可以解决我的问题。
  • @ajgo - 如果您正在寻找将数据从文件导入到sql server 表,那么一个选项是BCPxp_cmdshell 只会生成一个 windows 命令 shell 并传入一个字符串以在您的情况下执行,它可以是 BCP 命令。
  • @Abhishek - 我可以使用 BCP 将数据从 .xlsx 文件导入到 sql server 表吗?

标签: sql-server excel xp-cmdshell


【解决方案1】:

是的,BCP 可用于将数据从 excel(.xlsx) 文件导入Sql Server 表。这里唯一要记住的是来自MS documentation -

先决条件 - 将 Excel 数据另存为文本 使用其余方法 本页所述 - BULK INSERT 语句、BCP 工具或 Azure 数据工厂 - 首先您必须将 Excel 数据导出到 文本文件。

在 Excel 中,选择文件 |另存为,然后选择文本(制表符分隔) (.txt) 或 CSV(逗号分隔)(.csv) 作为目标文件类型。

BCP 命令示例,用于将数据从 excel 文件(转换为制表符分隔)导入Sql Server table -

bcp.exe "MyDB_Copy.dbo.Product" in "C:\Users\abhishek\Documents\BCPSample.txt" -c -t"\t" -r"\n" -S ABHISHEK-HP -T -h TABLOCK

阅读有关 BCP 的更多信息并导入 here

【讨论】:

  • 我尝试使用这种方法,但它总是导入 0 行。我使用这个语法: bcp "DbName.dbo.TableName" in "C:\MyFolder\MyExcelFile.xlsx" -S MyServer\loginname -T..
猜你喜欢
  • 2017-11-06
  • 1970-01-01
  • 2011-02-05
  • 2019-12-24
  • 1970-01-01
  • 2015-10-19
  • 1970-01-01
  • 2017-12-08
  • 1970-01-01
相关资源
最近更新 更多