Microsoft SQL 数据库将数据播种到 table 管道中
Microsoft SQL Database Seed data into table pipeline
我很难找到实现此目标的最佳方法。
我正在尝试实现一个完全自动化的过程来启动 Microsoft sql 服务器,使用 terraform 的 SQL 数据库,最终,当我拥有所有基础设施时,发布a *.dacpac
针对 SQL 数据库创建表和列,并最终在该数据库中播种一些数据。
到目前为止,我正在使用 azure pipeline 来实现这一点,这是我的工作流程:
- 地形初始化
- 地形验证
- 地形应用
- 数据库脚本(创建表和脚本
以上步骤工作正常,一切都完美无缺。现在我想实施另一个步骤,从 csv
或 excel
.
为数据库播种
A 对 google 做了一些研究并阅读了 Microsoft 文档,但显然有不同的方法可以做到这一点,但是所有这些方法,从 bulk insert
到 bcp 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 代理上:
我很难找到实现此目标的最佳方法。
我正在尝试实现一个完全自动化的过程来启动 Microsoft sql 服务器,使用 terraform 的 SQL 数据库,最终,当我拥有所有基础设施时,发布a *.dacpac
针对 SQL 数据库创建表和列,并最终在该数据库中播种一些数据。
到目前为止,我正在使用 azure pipeline 来实现这一点,这是我的工作流程:
- 地形初始化
- 地形验证
- 地形应用
- 数据库脚本(创建表和脚本
以上步骤工作正常,一切都完美无缺。现在我想实施另一个步骤,从 csv
或 excel
.
A 对 google 做了一些研究并阅读了 Microsoft 文档,但显然有不同的方法可以做到这一点,但是所有这些方法,从 bulk insert
到 bcp 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 代理上: