MSSQL 导入追加数据:新功能尝鲜!

导入追加数据的新功能

在MSSQL中,导入数据是一项基本任务。它允许将数据从一个格式转换为另一个格式并存储在数据库中。现在,MSSQL 2019带来了新的功能,可以更方便地追加数据到现有表中。接下来,我们将探索这些新功能。

1.导入数据

MSSQL提供了一种简单而直观的方法来导入数据。使用BULK INSERT语句,可以从CSV文件或文本文件中导入数据。

BULK INSERT [Table]   

FROM 'C:\Data\File.csv'

WITH

(

FIRSTROW = 2,

FIELDTERMINATOR = ',',

ROWTERMINATOR = '\n'

);

在上面的代码中,我们将数据从一个名为Table的表中导入。我们指定CSV文件的路径,并定义了分隔符和行终止符。

注意:导入数据的文件必须可读,并且必须在MSSQL服务器中的本地文件系统中。

2.追加导入数据

在MSSQL 2019中,BULK INSERT语句被改进以支持追加数据到现有表中。在旧版本的MSSQL中,如果您想将数据追加到现有表中,您需要使用INSERT INTO语句。但是,INSERT INTO语句的性能较低,并且在需要大量数据的情况下,它可能需要很长时间来执行。

现在,您可以使用以下代码将数据追加到现有表中。

BULK INSERT [Table]   

FROM 'C:\Data\File.csv'

WITH

(

FIRSTROW = 2,

FIELDTERMINATOR = ',',

ROWTERMINATOR = '\n',

KEEPIDENTITY,

TABLOCK,

BATCHSIZE = 10000,

CHECK_CONSTRAINTS

);

上面的代码包含了几个新选项,这些选项用于支持追加数据功能。

3.新选项

3.1 KEEPIDENTITY

在旧版本的MSSQL中,如果对具有自增列的表运行BULK INSERT命令,则会更改自增列中的标识符,因为插入了新数据。但是,在MSSQL 2019中,您可以使用KEEPIDENTITY选项来保持自增列的标识符不变,如下所示。

BULK INSERT [Table]   

FROM 'C:\Data\File.csv'

WITH

(

FIRSTROW = 2,

FIELDTERMINATOR = ',',

ROWTERMINATOR = '\n',

KEEPIDENTITY

);

3.2 TABLOCK

当您尝试追加数据到现有表时,您可能会遇到表被锁定的情况。这是因为INSERT INTO语句使用行级锁定,这意味着每个INSERT INTO语句将锁定每个插入的行。如果您需要导入大量数据,则可能会导致性能下降。在MSSQL 2019中,您可以使用TABLOCK选项以表级锁定方式运行BULK INSERT语句,如下所示。

BULK INSERT [Table]   

FROM 'C:\Data\File.csv'

WITH

(

FIRSTROW = 2,

FIELDTERMINATOR = ',',

ROWTERMINATOR = '\n',

TABLOCK

);

3.3 BATCHSIZE

BATCHSIZE选项定义将在每个事务中导入的行数。如果您使用默认的值,它将在每个事务中导入整个数据集。但是,如果您导入大量数据,您可能希望将数据分批导入以增加性能。

BULK INSERT [Table]   

FROM 'C:\Data\File.csv'

WITH

(

FIRSTROW = 2,

FIELDTERMINATOR = ',',

ROWTERMINATOR = '\n',

BATCHSIZE = 10000

);

3.4 CHECK_CONSTRAINTS

CHECK_CONSTRAINTS选项将检查INSERTED数据是否符合表约束。如果检测到不符合该约束,则BULK INSERT命令将失败。

BULK INSERT [Table]   

FROM 'C:\Data\File.csv'

WITH

(

FIRSTROW = 2,

FIELDTERMINATOR = ',',

ROWTERMINATOR = '\n',

CHECK_CONSTRAINTS

);

4.总结

MSSQL 2019为导入追加数据功能带来了巨大变化。新的选项和功能使得将数据追加到现有表中变得更加容易和快速。我们希望您在自己的MSSQL数据库中使用这些新功能。

数据库标签