You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 05:05:19