【问题标题】:How to insert multiple sheets of Excel data into one table in SQL Server?如何在 SQL Server 的一张表中插入多张 Excel 数据?
【发布时间】:2018-07-08 08:50:26
【问题描述】:

我编写了一个 PowerShell 脚本来从网站下载 Excel 数据:

## Download the NSCC-MPID-Directory.xls from website
$webclient = New-Object System.Net.webclient
$source = "http://www.dtcc.com/~/media/Files/Downloads/client-center/NSCC/NSCC-MPID-Directory.xls"
$destination = "C:\LSC\NSCC_MPID\NSCC-MPID-Directory.xls"
$webclient.downloadfile($source, $destination)
$filename = "NSCC-MPID-Directory.xls"

我想编写一个bcp 命令将 Excel 数据插入到我的 SQL Server 数据库中的表中。但是Excel文件中有多个sheet,下面的bcp就不行了:

bcp SIAC.dbo.NSCC_MPID in $filename  -S database1 -T -c -q -m9999

此外,我想知道是否有办法在单独的列中获取工作表名称,或者我可以将每个工作表的数据插入到不同的表中。因为不同的sheet有相同的数据格式:

但它们有不同的类别,在工作表名称中显示如下:

我想将它们分隔在一个表中或将它们插入同一个表中但创建另一个名为 category 的列,例如“OTC”

我真的很困惑如何处理这个......有人能给我一些建议吗?谢谢。

【问题讨论】:

标签: sql-server database excel powershell bcp


【解决方案1】:

我会推荐使用这个:

https://github.com/dfinke/ImportExcel

你可以定义-Worksheetname,模块也允许你直接ConvertFromExcelToSQLInsert

例如,ConvertFrom-ExcelToSQLInsert TableName .\testSQLGen.xlsx -WorksheetName OTC 将为您的 OTC 表生成插入语句,进入 TableName 表。

【讨论】:

  • 嗨,Jacob,你能给我举个例子,当插入 SQL 服务器时如何在新列中使用转换工作表名称。我找不到代码...谢谢
  • 试试ConvertFrom-ExcelToSQLInsert TableName .\testSQLGen.xlsx -WorksheetName OTC。 @Rachel 这会为 OTC 工作表生成 SQL 插入。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 2017-04-26
  • 1970-01-01
  • 2013-12-15
  • 2013-09-09
  • 1970-01-01
相关资源
最近更新 更多