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

15GB Confluence PostgreSQL备份导入SSMS遇300MB上限如何解决

我正在尝试导入超大.sql查询文件,该文件是大小为15GB的Confluence服务端数据库备份,需要导入至SSMS中,但SSMS仅支持最高300MB的文件导入,请问有什么可行的解决方案?
以下是备份文件样例:

--
-- PostgreSQL database dump
--
-- Dumped from database version 9.5.24
-- Dumped by pg_dump version 9.5.24
SET statement_timeout = 0;
SET lock_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
--
-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: 
--
CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
--
-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: 
--
COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
SET default_tablespace = '';
SET default_with_oids = false;
--
-- Name: AO_187CCC_SIDEBAR_LINK; Type: TABLE; Schema: public; Owner: confluenceuser
--
CREATE TABLE public."AO_187CCC_SIDEBAR_LINK" (
    "CATEGORY" character varying(255),
    "CUSTOM_ICON_CLASS" character varying(255),
    "CUSTOM_TITLE" character varying(255),
    "DEST_PAGE_ID" bigint DEFAULT 0,
    "HARDCODED_URL" character varying(255),
    "HIDDEN" boolean,
    "ID" integer NOT NULL,
    "POSITION" integer DEFAULT 0,
    "SPACE_KEY" character varying(255),
    "TYPE" character varying(255),
    "WEB_ITEM_KEY" character varying(255)
);
ALTER TABLE public."AO_187CCC_SIDEBAR_LINK" OWNER TO confluenceuser;
--
-- Name: AO_187CCC_SIDEBAR_LINK_ID_seq; Type: SEQUENCE; Schema: public; Owner: confluenceuser
--
CREATE SEQUENCE public."AO_187CCC_SIDEBAR_LINK_ID_seq"
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;
ALTER TABLE public."AO_187CCC_SIDEBAR_LINK_ID_seq" OWNER TO confluenceuser;
--
-- Name: AO_187CCC_SIDEBAR_LINK_ID_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: confluenceuser
--
ALTER SEQUENCE public."AO_187CCC_SIDEBAR_LINK_ID_seq" OWNED BY public."AO_187CCC_SIDEBAR_LINK"."ID";
--
-- Name: AO_21D670_WHITELIST_RULES; Type: TABLE; Schema: public; Owner: confluenceuser

该备份文件总共有3800万行数据。


15GB PostgreSQL格式Confluence备份导入SSMS可行方案

注:你提供的备份是PostgreSQL导出的SQL脚本,语法与SQL Server不兼容,导入前需先完成语法适配,否则会直接执行报错

方案1:使用sqlcmd命令行导入(优先推荐,无需拆分文件)

SSMS图形界面的导入功能有300MB大小限制,但微软官方自带的sqlcmd命令行工具支持流式读取超大文件,不会一次性加载全量数据到内存,适配千万行级数据导入,操作步骤:

  • 先完成PostgreSQL到SQL Server的语法适配:批量替换PostgreSQL独有关键字和语法,例如将character varying替换为varchar、boolean替换为bit、去掉public. schema前缀、删除PostgreSQL独有的SET配置语句、EXTENSION相关语句、序列语法适配为SQL Server的对应规则
  • 打开CMD或PowerShell,执行如下命令:
sqlcmd -S 你的SQL Server实例名 -d 目标数据库名 -U 登录账号 -P 登录密码 -i 15GB备份文件的完整绝对路径 -o 执行日志存储路径.log
  • 等待执行完成即可,可通过输出的日志文件排查执行过程中出现的报错

方案2:拆分大文件分批适配SSMS导入

如果你必须使用SSMS图形界面操作,可以先将大SQL文件拆分为多个小于300MB的小文件再依次导入:

  • 可使用Git Bash自带的split命令或专用大文本拆分工具完成拆分,拆分命令示例:
split -l 100000 你的备份文件名.sql 拆分后文件前缀_

以上命令会每10万行拆分出一个独立的SQL文件,拆分后单文件大小基本都在300MB以内

  • 按照拆分的先后顺序,依次将小文件导入SSMS即可,注意不要打乱顺序,避免表创建、数据插入的依赖错误

方案3:结构化迁移(适配性最高,适合语法适配工作量大的场景)

如果手动改SQL语法成本过高,可以走跨库迁移路线,无需直接执行SQL脚本:

  • 先将该15GB备份恢复到一个临时搭建的PostgreSQL实例中
  • 使用SSMA(SQL Server迁移助手)或SSMS自带的导入导出向导,同时连接PostgreSQL源库和SQL Server目标库,工具会自动完成数据类型适配、结构转换,3800万行数据支持断点续传,导入稳定性更高

导入前注意事项:提前调整SQL Server目标库的事务日志增长规则,将自动增长步长调整为GB级,避免导入过程中日志频繁扩容失败;测试环境可暂时将数据库恢复模式改为简单模式,大幅降低日志占用,提升导入速度。


内容的提问来源于stack exchange,提问作者Edgars R. Dunis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:12:06