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'
相关推荐
前进的李工43 分钟前
SQL聚合函数与分组查询详解
数据库·sql·mysql
Xの哲學2 小时前
Linux多级时间轮:高精度定时器的艺术与科学
linux·服务器·网络·算法·边缘计算
FlourishingMind2 小时前
蓝牙授时CTS (Current Time Service)、PTP、NTP
运维·服务器·网络
2301_800050992 小时前
mysql
数据库·笔记·mysql
数据皮皮侠3 小时前
2m气温数据集(1940-2024)
大数据·数据库·人工智能·制造·微信开放平台
QT 小鲜肉3 小时前
【Linux命令大全】001.文件管理之mmove命令(实操篇)
linux·服务器·前端·chrome·笔记
MaximusCoder3 小时前
Linux信息收集Command
运维·服务器·经验分享
Psycho_MrZhang3 小时前
Redis 设计思想总结
数据库·redis·缓存
QT 小鲜肉3 小时前
【Linux命令大全】001.文件管理之mdel命令(实操篇)
linux·运维·服务器·chrome·笔记
就不掉头发4 小时前
I/O复用
运维·服务器·c语言·开发语言