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

如何在Linux系统下导出和导入SQL Server 2017数据库?

我来帮你梳理下在Linux Mint 18.3上操作SQL Server 2017数据库导出导入的几种靠谱方法,尤其是你关注的脚本化实现方式:

一、使用sqlcmd通过备份/还原实现(脚本化首选)

这是SQL Server跨平台最标准的导出导入方案,完全支持脚本自动化,适合批量或定时操作。

1. 导出(备份)数据库

直接通过sqlcmd连接实例执行备份命令,记得替换占位符内容:

sqlcmd -S localhost -U SA -P "你的SA密码" -Q "BACKUP DATABASE [你的数据库名] TO DISK = '/var/opt/mssql/data/你的数据库名.bak' WITH FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, STATS = 10;"

各参数说明:

  • FORMAT:创建全新备份集,覆盖同名旧文件
  • INIT:初始化备份介质,清空原有内容后写入新备份
  • STATS = 10:每完成10%进度输出一次状态,方便监控

注意:备份路径要选SQL Server的运行用户mssql有权限访问的目录,默认/var/opt/mssql/data/是安全选择。

2. 导入(还原)数据库

如果要还原到同一或另一台Linux服务器的SQL Server实例,先把备份文件放到目标服务器的可访问路径,再执行还原命令:

sqlcmd -S localhost -U SA -P "你的SA密码" -Q "RESTORE DATABASE [目标数据库名] FROM DISK = '/var/opt/mssql/data/你的数据库名.bak' WITH REPLACE, MOVE '你的数据库名' TO '/var/opt/mssql/data/目标数据库名.mdf', MOVE '你的数据库名_log' TO '/var/opt/mssql/data/目标数据库名_log.ldf', STATS = 10;"

关键参数说明:

  • REPLACE:若目标数据库已存在,直接覆盖(谨慎使用)
  • MOVE子句:由于备份文件中记录的是原服务器的物理文件路径,需要重新指定目标服务器的mdf/ldf存储路径

如果不清楚备份文件里的逻辑文件名,可以先执行这条命令查询:

sqlcmd -S localhost -U SA -P "你的SA密码" -Q "RESTORE FILELISTONLY FROM DISK = '/var/opt/mssql/data/你的数据库名.bak';"
二、使用JetBrains DataGrip(可视化+脚本导出)

DataGrip是跨平台的数据库工具,既支持可视化操作,也能生成可复用的脚本,适合兼顾效率和灵活性的场景。

1. 导出数据库

  • 连接到你的SQL Server实例,找到要导出的数据库
  • 右键点击数据库 → 选择Export Data
  • 在导出向导中选择SQL格式(适合脚本化),配置导出选项:可选择导出结构+数据、仅结构,还能设置是否包含建库语句、索引、触发器等
  • 最后可以直接生成脚本文件,或保存导出配置以便重复使用

2. 导入数据库

  • 右键点击目标服务器的Databases节点 → 选择Restore,可直接选择备份文件还原(和sqlcmd的备份文件通用)
  • 若要导入SQL脚本:右键点击目标数据库 → 选择Run SQL Script,选中之前导出的脚本文件执行即可
三、用mssql-scripter生成T-SQL脚本(轻量脚本化工具)

这是微软官方的跨平台工具,专门用来生成SQL Server数据库的结构/数据脚本,适合纯文本脚本的导出导入场景。

1. 安装mssql-scripter

需要先有Python环境,然后用pip安装:

pip install mssql-scripter

2. 导出数据库脚本

导出完整数据库(结构+数据):

mssql-scripter -S localhost -U SA -P "你的SA密码" -d "你的数据库名" --schema-and-data > 你的数据库名.sql

仅导出结构:

mssql-scripter -S localhost -U SA -P "你的SA密码" -d "你的数据库名" --schema-only > 你的数据库名_schema.sql

3. 导入脚本

用sqlcmd执行生成的脚本即可:

sqlcmd -S localhost -U SA -P "你的SA密码" -d "目标数据库名" -i 你的数据库名.sql

提示:如果脚本包含建库语句,目标数据库无需提前创建;否则需要先手动创建空数据库。

四、批量操作单表数据:bcp命令

如果只需要导出导入特定表的大数据量数据,bcp是高效的选择,支持文本格式的批量读写。

1. 导出表数据到CSV

bcp 你的数据库名.dbo.你的表名 out /path/to/你的表名.csv -S localhost -U SA -P "你的SA密码" -c -t, -r\n

参数说明:

  • -c:以字符格式导出
  • -t,:指定列分隔符为逗号
  • -r\n:指定行分隔符为换行

2. 导入CSV到表

bcp 你的数据库名.dbo.你的表名 in /path/to/你的表名.csv -S localhost -U SA -P "你的SA密码" -c -t, -r\n

注意:目标表需要提前创建好与源表一致的结构。

内容的提问来源于stack exchange,提问作者Andrey Bushman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:35:22