Microsoft SQL 数据库将数据播种到 table 管道中

Microsoft SQL Database Seed data into table pipeline

我很难找到实现此目标的最佳方法。

我正在尝试实现一个完全自动化的过程来启动 Microsoft sql 服务器,使用 terraform 的 SQL 数据库,最终,当我拥有所有基础设施时,发布a *.dacpac 针对 SQL 数据库创建表和列,并最终在该数据库中播种一些数据。

到目前为止,我正在使用 azure pipeline 来实现这一点,这是我的工作流程:

以上步骤工作正常,一切都完美无缺。现在我想实施另一个步骤,从 csvexcel.

为数据库播种

A 对 google 做了一些研究并阅读了 Microsoft 文档,但显然有不同的方法可以做到这一点,但是所有这些方法,从 bulk insertbcp sqlcmd,都记录在本地服务器而不是云服务器。

谁能告诉我如何使用 Azure 管道和云 SQL 数据库来完成这项任务?非常感谢您的任何提示

更新: 如果我在 cmd 脚本的发布管道中创建任务。我收到以下错误:

2021-11-12T17:38:39.1887476Z Generating script.
2021-11-12T17:38:39.2119542Z Script contents:
2021-11-12T17:38:39.2146058Z bcp Company in "./Company.csv" -c -t -S XXXXX -d XXXX -U usertest -P ***
2021-11-12T17:38:39.2885488Z ========================== Starting Command Output ===========================
2021-11-12T17:38:39.3505412Z ##[command]"C:\Windows\system32\cmd.exe" /D /E:ON /V:OFF /S /C "CALL "D:\a\_tempc62204-f40c-4662-afb8-862bbd4c42b5.cmd""
2021-11-12T17:38:39.7265213Z SQLState = S1000, NativeError = 0
2021-11-12T17:38:39.7266751Z Error = [Microsoft][ODBC Driver 17 for SQL Server]Unable to open BCP host data-file

其实应该是quite simple:

The following example imports data using Azure AD Username and Password where user and password is an AAD credential. The example imports data from file c:\last\data1.dat into table bcptest for database testdb on Azure server aadserver.database.windows.net using Azure AD User/Password:

bcp bcptest in "c:\last\data1.dat" -c -t -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com -P xxxxx

如果您不打算使用 AAD 帐户 - 请删除 -G 标记。

理想情况下,如果您直接从 terraform 将您的管理员帐户名和密码输入到 terraform 中。您可以通过管道中的 KeyVault 任务获取这些值,并用于 运行 上述脚本。

看起来 bcp 已经在 windows 代理上: