`

Java调用BCP导入数据到数据库解决标识列ID问题

    博客分类:
  • java
 
阅读更多

面的一篇博文讲解了调用bcp批量导出数据,对于批量导入数据则写的不怎么详细,本文再详细的介绍下一个使用技巧。对于批量导入,如果表中含有标识列,则默认会按照Sql Server 的处理方式来处理这个标识列,因此也就不是我们需要的ID值了,本文我们一起来探讨下解决方法。

①要导入的数据如下:

 

 

红框框的则是标识列,自动增长。

但是,我们使用了

 

  1. bcp sportSys.dbo.competitions in %1competitions.xls -c -T >>%2import.txt 

②导入数据之后,发现数据出现了问题。

 

 

可以很清晰的发现,ID变了,由此带来的问题也就可想而知了,怎么解决这个问题呢?

有人提出了下面的这种做法:

 

  1. SET IDENTITY_INSERT tb ON--把显式值插入表的标识列中。  
  2. INSERT INTO.....  
  3. SET IDENTITY_INSERT tb OFF--完成之后关闭选项 

这条语句使用的时候,只能一张表一张表的导入,也就失去了批量导入的意义了。
而且直接写在我们的bat文件中还会提示

  1. SET IDENTITY_INSERT sportSys.dbo.compet  
  2. itions on  
  3. 环境变量 IDENTITY_INSERT sportSys.dbo.competitions 没有定义  
  4.  

经查阅文档发现,bcp已经为我们提供了一个非常好的解决方法,加上-E

这个参数,即可解决标识列的问题!

下面是-E 参数的详细介绍,

  1. -E   
  2. Specifies that identity value or values in the imported data file are to be used for the identity column. If -E is not given, the identity values for this column in the data file being imported are ignored, and SQL Server automatically assigns unique values based on the seed and increment values specified during table creation.   
  3.  
  4. If the data file does not contain values for the identity column in the table or view, use a format file to specify that the identity column in the table or view should be skipped when importing data; SQL Server automatically assigns unique values for the column. For more information, see DBCC CHECKIDENT (Transact-SQL).  
  5.  
  6. The -E option has a special permissions requirement. For more information, see "Remarks" later in this topic.  
  7.  

 

如果bcp导入的时候,没有加入-E这个参数,则对于目标表中的标识列的处理则由Sql Server 自动的来处理,因此得出的ID值就不是我们想要的了。

本文出自 “幽灵柯南的技术blog” 博客,请务必保留此出处http://enetq.blog.51cto.com/479739/912093

分享到:
评论

相关推荐

    利用BCP导入导出数据库为文本数据

    `in`表示从文件导入数据到数据库;`out`表示将数据从数据库导出到文件;`queryout`则执行一个查询并将结果导出到文件。 - **data_file**:指定用于存放数据的文件路径。 - **-S server_name[\instance_name]**:指定...

    vb利用shell功能调用sql里的bcp数据库导出导入

    导入数据的过程类似,但使用`in`选项: ```vb Dim importCommand As String = "bcp myDatabase.dbo.myTable in C:\Data\import.txt -S myServer -U myUser -P myPassword -c -t , -r \n" Call Shell(importCommand,...

    bcp导入导出数据

    - `in`表示从文件导入数据到数据库表。 - `out`表示从数据库表导出数据到文件。 - `-U`指定登录数据库的用户名。 - `-P`指定登录数据库的密码。 - `-S`指定服务器名称。 - `-c`指定字符集。 示例: ``` bcp sync...

    JAVA跨数据库导出导入数据:SQL2000 导入到 MYSQL(附件)

    总的来说,JAVA跨数据库导出导入数据是一个技术性强且需要细心操作的过程,涉及到多个环节和技能。"ManyConn"提供的解决方案,可能是对这些复杂步骤的一种简化和封装,帮助开发者更高效地完成数据迁移任务。

    BCP命令导入导出数据

    BCP 命令也可以批量导入数据到数据库中。批量导入数据的命令格式如下: ``` bcp <表名> in <文件名> -c -U <用户名> -P <密码> ``` 其中,`<文件名>` 是要导入的文件的名称。 例如,要批量导入 `student.dat` 文件...

    JAVA实现跨数据库服务器数据导出导入功能

    7. **性能优化**: 为了加快数据迁移速度,可以考虑使用数据库级别的导出导入工具,如SQL Server的bcp或MySQL的mysqldump,然后再用JAVA进行调用。另外,优化SQL查询,如使用索引,可以显著提升数据提取效率。 8. **...

    Sql Server数据库BCP导入导出工具

    这是一个数据初始化工具,数据导出:在ServerDbConfig.cfg文件里配置好数据库访问所需要的信息,在sql文件下配置好要导出的SqlFiles,执行批处理DBUpdator_Normal.bat,就可以...就可以将文本形式的数据导入到数据库中。

    sybase数据库 bcp问题总结

    在使用 BCP 导入数据时,可能会遇到字符集问题,例如 Unicode 字符集问题。为了解决这些问题,可以使用以下参数: * bcp dbname..tabname in filename -Uxx -Pxx -Sxx -Jcp936 -c -Y 这将使得 BCP 能够正确地处理 ...

    c#实现excel数据高效导入到sql数据库

    在C#中,高效地将Excel数据导入SQL Server数据库是一项常见的任务,尤其在处理大量数据时,效率显得尤为重要。本文将详细介绍如何使用C#的System.Data.SqlClient.SqlBulkCopy类来实现这一功能。 首先,SqlBulkCopy...

    数据库数据的导入导出和数据库备份和恢复.pdf

    在数据库管理中,数据的导入导出是一个重要的操作,它允许我们将数据从一个数据库系统转移到另一个系统,或者在不同的格式之间进行转换。例如,文件中提到的从SQL Server导出数据并导入到另一个SQL Server实例("SQL...

    SQL_Server数据导入导出工具BCP详解

    SQL Server的BCP(Bulk Copy Program)工具是一个强大的命令行实用程序,用于高效地导入大量数据到SQL Server数据库,或导出数据到文件。在本文中,我们将深入探讨BCP的工作原理、使用方法以及相关最佳实践,以帮助...

    bcp导库报错 错误字符串数据,右截位

    本文将针对一个常见的问题——使用`bcp`工具导入文本文件到数据库时报出的“错误字符串数据,右截位”这一错误进行详细解析,并提供相应的解决策略。 #### 一、错误概述 在使用`bcp`命令行工具导入数据时,如果...

    SybaseV15安装相关资料及bcp导入导出命令

    例如,`bcp database_name.table_name in 'data_file.txt' -S server_name -U user_name -P password` 将从文本文件'data_file.txt'导入数据到数据库的表中。bcp还支持各种选项来控制数据格式、错误处理和数据转换。...

    数据库的导入导出、数据库备份和恢复.doc

    2. 将导出的文本数据重新导入到同一个数据库中,这可能是通过`bcp`或"任务"->"导入数据"来实现的,保证了数据的迁移。 3. 创建数据库的备份文件,这可能使用了SSMS的“任务”->“备份”选项,生成了一个.bak文件。 4...

    c#实现excel数据高效导入到sql数据库.pdf

    // 用 bcp 导入数据 using (System.Data.SqlClient.SqlBulkCopy bcp = new System.Data.SqlClient.SqlBulkCopy(connectionString)) { bcp.DestinationTableName = sheetName; bcp.WriteToServer(ds.Tables[0]);...

    bcp—SQLServer命令行数据导入导出工具使用总结.txt

    bcp是微软SQLServer数据库系统的命令行工具,用于进行大数据量的导入导出,该工具简单实用、效率极高,本文总结了bcp命令操作的各种设置开关功能含义和使用方法,可以为需要的用户提供有益帮助。

    EXCEL导入到SQL数据库

    - 使用BCP(Bulk Copy Program)工具:批量导入数据,适用于大量数据。 - 使用Power Query:这是Excel的一个功能,可以连接到SQL Server并导入数据,适合小型数据集。 4. 数据转换:如果Excel数据需要转换才能...

    SQL Server7.0数据库导入数据时出现的符号问题及其解决方法.pdf

    SQL Server 7.0 数据库导入数据时出现的符号问题及其解决方法 本文主要介绍了在使用 SQL Server 7.0 导入数据时出现的符号问题及其解决方法。文章首先介绍了项目的背景和目的,然后详细介绍了数据准备、临时数据库...

    bcp常见问题处理

    * `<database_name>`:要导入数据的数据库名称 * `<table_name>`:要导入数据的表名称 * `<data_file>`:要导入的数据文件 * `-c`:指定以 character 格式导入数据 * `-t <delimiter>`:指定分隔符,例如`|`或`,`等 ...

Global site tag (gtag.js) - Google Analytics