azure - Microsoft SQL 数据库将数据播种到表管道中
问题描述
我有点努力寻找实现这一目标的最佳方法。
我正在尝试实现一个完全自动化的过程来启动 Microsoft sql 服务器、使用 terraform 的 SQL 数据库,最终,当我拥有所有基础设施时,*.dacpac
针对 SQL 数据库发布一个以创建表和列并最终播种该数据库中的一些数据。
到目前为止,我正在使用 azure 管道来实现这一点,这是我的工作流程:
- 地形初始化
- 地形验证
- 地形应用
- 数据库脚本(创建表和脚本
上述步骤工作正常,一切都完美到位。现在我想实施另一个步骤来从 acsv
或excel
.
A 对谷歌进行了一些研究并阅读了 Microsoft 文档,但显然有不同的方法可以做到这一点,但所有这些方法,从bulk insert
to 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\_temp\33c62204-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
解决方案
它实际上应该很简单:
以下示例使用 Azure AD 用户名和密码导入数据,其中用户和密码是 AAD 凭据。该示例使用 Azure AD 用户/密码将文件 c:\last\data1.dat 中的数据导入表 bcptest 以用于 Azure 服务器 aadserver.database.windows.net 上的数据库 testdb:
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 代理上:
推荐阅读
- reactjs - 反应路由器返回主页
- python - Tensorflow 2.3 / Keras - 自定义上采样层的梯度函数?
- django - Django:包含的模板不出现
- webpack - 找不到模块:错误:无法解析 webpack 中的“util”
- reactjs - 让简单的样式与反应箭头功能一起使用
- angular - 从父组件获取结果时,有没有比 EventEmitter 更好的方法?
- json - 如何使用 jq 按元素属性值过滤对象数组并选择第一个元素?
- android - purchaseToken 在 Android 应用内购买中是唯一的吗?
- django - 如何删除默认顺序 - 由 Django 管理员设置 - 主键上的更改列表
- c++ - Effective Modern C++ 中的这个项目仍然是最新的吗?