我需要将 1.5 亿行只有 int/bigint 列从一个 SQL 实例导出到另一个。我使用 BCP queryout 导出行和 BULK INSERT 将行导入另一个表。
我将 1.5 亿行拆分为 3 个 BCP 导出文件,每个文件有 5000 万行和 3 个 BULK INSERTS。它有效(15 分钟 BCP 输出/40 分钟批量插入),但我宁愿只导出一个文件并导入一个文件。
这在技术上是可行的,还是我可能会遇到大量行的问题?我从未从 BCP 文件中导入超过 5000 万行,我不确定这如何解决。BCP 导出或导入有限制吗?
谢谢,
通常,当开发人员或数据分析师之一需要执行非常大的数据更新或删除时(其中截断或截断/插入没有意义,因为要保留的数据集太大)我建议他们这样做类似于以下内容:
-- Delete 1 million rows 1 thousand at a time
DELETE TOP (1000) FROM TableA WHERE <condition>
WAITFOR DELAY '00:00:01'
GO 1000
Run Code Online (Sandbox Code Playgroud)
对处于完全恢复模式的数据库执行此操作的结果是 1) 等待允许其他事务在需要时进行处理 2) 当日志备份运行时,它能够在日志文件中将已完成的操作标记为脏操作可以复用空间,防止日志增长过快。
而不是这样做,我想知道是否可以使用检查点完成同样的事情。这句话是否会有效地导致同样的情况发生?
-- Delete 1 million rows 1 thousand at a time
WHILE EXISTS ( SELECT 1 FROM TableA WHERE <condition> )
BEGIN
DELETE TOP (1000) FROM TableA WHERE <condition>
WAITFOR DELAY '00:00:01'
CHECKPOINT
END
Run Code Online (Sandbox Code Playgroud)
同样,这些是处于完全恢复模式的数据库。
我使用 SQL Server 2008 我想发送(并更新重复的日期时间索引)一个大的时间序列(超过 1000 个数据点,最终远不止这些)。这样做的最佳方法是什么?我被建议使用
合并
和
批量插入
但,
欢迎任何建议
在 SQL Server 2008 R2 中,使用BulkCopy上传数千行数据会导致在同一张表上进行查询时出现问题吗?
特别是它会导致查询超时吗?
被查询的表有数百万行。
我正在尝试将数据从一个数据库系统转换为另一个数据库系统。我需要传输和格式化的表之一包含超过 1000 万行。
我正在运行以下脚本来做到这一点:
USE [Cvti101687]
go
truncate table [IDAT_MR_NOTEHISTORY]
go
IF EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[IDAT_MR_NOTEHISTORY]') AND name = N'PK_iMR_NOTES')
ALTER TABLE [dbo].[IDAT_MR_NOTEHISTORY] DROP CONSTRAINT [PK_iMR_NOTES]
GO
USE [101687_test2]
GO
declare @ChunkCounter int
declare @ChunkSize int
set @ChunkCounter = 0
set @ChunkSize = 50000
--hack to do a do-while loop in sql
while 1 = 1
begin
insert into cvti101639..IDAT_MR_NOTEHISTORY with (tablock)
SELECT newid(), '00000000-0000-0000-0000-000000000000', '00000000-0000-0000-0000-000000000000', '00000000-0000-0000-0000-000000000000'
,'00000000-0000-0000-0000-000000000000', ISNULL(TargetClientAccountNum, [REC_CLINUM]), ISNULL(TargetPetAccountNum, ' ')
,ISNULL(pck_desc, 'Converted …Run Code Online (Sandbox Code Playgroud) 我正在构建一个程序,它以以下形式生成 T-SQL 查询:
DECLARE @In TABLE (Col CHAR(20))
INSERT INTO @In VALUES value1, value2... value1000
GO
INSERT INTO @In VALUES value1001, value1002...
Run Code Online (Sandbox Code Playgroud)
但第二条INSERT语句抛出错误:
消息 1087,级别 15,状态 2,第 1 行
必须声明表变量“@In”。
我究竟做错了什么?