Sql Server 大批量数据迁移

Sql Server 大批量数据迁移

一、生成BCP脚本

sql 复制代码
SELECT 
'bcp "SELECT * FROM [ZOL_YS001ERPV2].[dbo].[' + t.name + '] ' +
'WHERE CompanyCode IN (''00000015'',''00000603'','''') OR CompanyCode IS NULL  " ' +
'queryout "{文件夹路径}\' + t.name + '.dat" ' +
'-S {数据库IP} -U {账户} -P "{密码}" -n -b 50000'
FROM sys.tables t
JOIN sys.columns c ON t.object_id = c.object_id
WHERE c.name = 'CompanyCode:包含什么字段的表'

1、查出数据脚本 另存为 .bat

Export_Data.bat

文件编码更改:ANSI

2、导出文件会在 上面路径下

二、生成导入脚本

c 复制代码
@echo off
setlocal enabledelayedexpansion

echo 开始导入数据...
echo 导入时间: %date% %time%

set "server={数据库IP}"
set "database={表}"
set "user={账户}"
set "password={密码}"

for %%f in ({文件夹路径}\*.dat) do (
    set "filename=%%~nf"
    echo 正在导入表: !filename!
    
    bcp "!database!.dbo.!filename!" IN "%%f" -S %server% -U %user% -P "%password%" -n -b 50000 -E -h "TABLOCK"
    
    if !errorlevel! equ 0 (
        echo 成功导入: !filename!
    ) else (
        echo 错误: !filename! 导入失败
    )
)

echo 导入完成!
echo 结束时间: %date% %time%
pause

1、上方另存为 .bat

Import_All_Data.bat

文件编码更改:ANSI

数据库设置简单日志模式

sql 复制代码
--1、简单日志
ALTER DATABASE [H_ZOL_YS001ERPV2] SET RECOVERY SIMPLE;
 --2、完整日志
ALTER DATABASE [H_ZOL_YS001ERPV2] SET RECOVERY FULL;

比较两个库差异表

sql 复制代码
SELECT 
    b.TABLE_NAME
FROM 
    ZOL_YS001RPTV2.INFORMATION_SCHEMA.TABLES b
LEFT JOIN 
    H_ZOL_YS001RPTV2.INFORMATION_SCHEMA.TABLES a
    ON a.TABLE_NAME = b.TABLE_NAME
WHERE 
    a.TABLE_NAME IS NULL
    AND b.TABLE_TYPE = 'BASE TABLE'
ORDER BY 
    b.TABLE_NAME;

去除表自增

sql 复制代码
SET IDENTITY_INSERT 表 ON

可插入语句

SET IDENTITY_INSERT 表  OFF --294872

数据库权限

sql 复制代码
1、设置数据库可信度
执行以下T-SQL命令将数据库标记为可信:
sql

ALTER DATABASE [数据库名] SET TRUSTWORTHY ON


2、更改数据库所有者
有时需要将数据库所有者改为sa账户:
sql
USE [数据库名]
GO
EXEC sp_changedbowner 'sa'
相关推荐
IvorySQL4 小时前
PG 日报|新增 VACUUM 全维度统计信息补丁迭代
数据库·人工智能·postgresql·ivorysql
不能跑的代码不是好代码4 小时前
Linux系统常用命令中文速查表
linux·运维·服务器
石一峰6995 小时前
深入理解 Linux 中断三层机制与 1-Wire 时序锁原理
linux·运维·服务器
无限码农6 小时前
Linux上通过cmake编译uchardet
linux·运维·服务器
白露与泡影6 小时前
Redis 缓存实战:雪崩、穿透、击穿一次讲透
数据库·redis·缓存
赵渝强老师8 小时前
【赵渝强老师】使用Oracle可传输的表空间迁移数据
数据库·oracle
ACP广源盛139246256738 小时前
IX8024@ACP# 搭配此芯 AI 服务器 + 爱芯元智产品完整方案
大数据·运维·服务器·人工智能·分布式·嵌入式硬件
IpdataCloud9 小时前
跨区服玩家延迟高怎么办?用IP离线库自动分配到最近服务器
数据库·tcp/ip·github·php·ip
Hiyajo pray9 小时前
SDN 访问控制性能调优方法
服务器·网络·网络安全
wuqingshun31415910 小时前
MYSQL默认的事务隔离级别是什么?为什么选择这个级别?
数据库·mysql