【问题标题】:Want to bulk insert Excel file directly into Azure Database using Powershell想要使用 Powershell 将 Excel 文件直接批量插入 Azure 数据库
【发布时间】:2019-12-11 00:43:13
【问题描述】:

我正在尝试将 xlsx 文件直接批量导入 Azure 数据库,我不能为此使用 Blob 或 ADF 或 SSIS,它必须是 excel 导入 Azure 数据库。我已经尝试了许多 Internet 上可用的脚本,包括 DBA 工具,但它们都不起作用。该表已在 Azure DB 上创建,

我拥有的数据类型不适用于 .CSV 或 .txt,因此我无法使用 BLOB 或 ADF,此外,我在使用 powershell 时面临的第一个挑战是连接,无法与Azure 数据库

【问题讨论】:

  • 有没有可能使用python脚本?
  • 是的,但是我听说python逐行插入数据,随着数据的增加会变慢
  • 查看这个帖子快速批量加载stackoverflow.com/questions/44216578/…,你的问题中没有指出加载数据的速度
  • hI @AKG,如果我的回答对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢。

标签: sql-server database azure powershell


【解决方案1】:

您的问题中缺少某些信息。什么样的 Azure 数据库?你会使用 SQL 吗?

使用PSExcel 将 xlsx 作为对象导入

$foo = Import-XLSX foo.xlsx

根据数据使用Invoke-SQLCmdstructure a query

Foreach ($row in $foo) {
   $sqlquery = "INSERT INTO table VALUES($($row.bar), $($row.etc)"
   invoke-sqlcmd -ServerInstance MyServer -Database 'TestDB' -Query $sqlquery
}

【讨论】:

  • 您好 ncfx,感谢您的回复,但是我猜如果服务器上没有安装 excel,上面的脚本将无法工作,我有一个运行此脚本的服务器,我无法安装 excel它,你还有一种方法可以建立一个连接字符串并输入Azure的用户名和密码以及密码作为安全字符串,这就是我现在卡住的地方。
  • 我无法对您的环境做出任何假设,但 SQL 是在客户端准备并在服务器端执行的。这旨在在您的本地计算机上运行以连接到服务器上的 SQL 引擎。如果连 SQL 引擎都连接不上,那你是怎么使用数据库的呢?
【解决方案2】:

请看本教程:Import data from Excel to SQL Server or Azure SQL Database

有多种方法可以将数据从 Excel 文件导入 SQL Server 或 Azure SQL 数据库。有些方法可以让您直接从 Excel 文件中一步导入数据;其他方法要求您将 Excel 数据导出为文本,然后才能导入。本文总结了常用的方法,并提供了更多详细信息的链接。

BULK INSERT 命令只支持导入 csv 文件。

我建议你使用SQL Server Import and Export Wizard

例如:

我的 xlsx 文件:

该表已在 Azure SQL DB 上创建:

SQL Server 导入数据:

希望这会有所帮助。

【讨论】:

  • 嗨莱昂,谢谢!对于您的回复,导入导出向导仅适用于手动工作,我的目标是自动化此过程,在此过程中文件按计划继续导入 Azure DB,这就是我希望创建某种脚本的原因。跨度>
  • 嗨@AKG,据我所知,所有脚本都不适用于“.xlsx”文件。甚至数据工厂也不支持“.xlsx”文件。
  • @AKG,也许你可以创建一个SSIS包到load xlsx file to Azure SQL server,然后Schedule the execution of SQL Server Integration Services (SSIS) packages。希望这会有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
  • 1970-01-01
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多