如何在Mac/Linux的Azure SQL Edge容器中导出*.sql格式数据库?
针对Azure SQL Edge生成纯文本INSERT SQL的解决方案
一、内置工具实现方式
1. 使用sqlcmd命令行工具(容器友好,推荐)
sqlcmd是SQL Server官方命令行工具,Azure SQL Edge容器默认已预装。你可以通过自定义T-SQL查询生成目标表的INSERT语句,再输出到文件。
单表生成示例:
- 先进入Azure SQL Edge容器:
docker exec -it <你的容器名称> bash - 执行sqlcmd连接数据库并生成INSERT脚本:
说明:sqlcmd -S localhost -U SA -P "<你的SA密码>" -d <目标数据库名> -Q "SET NOCOUNT ON; SELECT 'INSERT INTO a.A VALUES (' + STRING_AGG(CONCAT('''', REPLACE(CAST(column1 AS VARCHAR(MAX)), '''', ''''''), ''''), ', ') + ');' FROM a.A;" -o /tmp/insert_a.sql- 替换
column1为表的实际列名,多列按顺序逐一替换 STRING_AGG是Azure SQL Edge支持的函数,用于拼接列值生成INSERT语句的取值部分- 生成的文件会保存在容器内的
/tmp/insert_a.sql,可按需复制到宿主机
- 替换
多表批量生成示例:
先编写一个自动遍历表的T-SQL脚本(保存为generate_inserts.sql):
DECLARE @TableName NVARCHAR(128) DECLARE TableCursor CURSOR FOR SELECT TABLE_SCHEMA + '.' + TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' OPEN TableCursor FETCH NEXT FROM TableCursor INTO @TableName WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @Sql NVARCHAR(MAX) SET @Sql = 'SELECT ''INSERT INTO ' + @TableName + ' VALUES ('' + STRING_AGG(CONCAT('''''''', REPLACE(CAST(COLUMN_NAME AS VARCHAR(MAX)), '''''''', ''''''''''), ''''''''''), '', '') + '');'' FROM ' + @TableName EXEC sp_executesql @Sql FETCH NEXT FROM TableCursor INTO @TableName END CLOSE TableCursor DEALLOCATE TableCursor
再用sqlcmd执行脚本并输出结果:
sqlcmd -S localhost -U SA -P "<你的SA密码>" -d <目标数据库名> -i /tmp/generate_inserts.sql -o /tmp/all_inserts.sql
2. 使用图形化生成脚本向导(适合临时操作)
如果能通过SQL Server Management Studio(SSMS)或Azure Data Studio连接到容器内的Azure SQL Edge,可直接用内置功能生成脚本:
- 连接数据库后,右键目标数据库 → 任务 → 生成脚本
- 在向导中选择需要导出的表,进入「设置脚本选项」步骤
- 在「高级」选项里,将「脚本数据」设为「是」,「脚本数据的方式」选择「INSERT」
- 完成向导后即可生成纯文本INSERT格式的脚本,可读性强,适合教学场景
二、其他简单替代方式
1. 用mssql-scripter工具
这是微软开源的轻量命令行工具,专门用于生成SQL脚本,支持直接生成INSERT语句:
mssql-scripter -S localhost -U SA -P "<你的SA密码>" -d <目标数据库名> --data-only --script-type INSERT > inserts.sql
该工具可在Mac/Linux上直接安装,无需进入容器,生成的文件可直接共享。
2. 手动生成小数据片段
如果仅需导出少量教学用数据,可直接执行SELECT * FROM 目标表 LIMIT N(N为需要的行数),把查询结果复制后手动转换成INSERT格式,适合快速生成小样本数据。
内容的提问来源于stack exchange,提问作者Itay Moav -Malimovka
相关产品推荐
相关产品推荐

