【问题标题】:SQL Server bulk insert int into bigintSQL Server 将 int 批量插入 bigint
【发布时间】:2014-08-17 14:16:24
【问题描述】:

我正在尝试使用 bcp 实用程序将表导出到磁盘,删除数据,将该表上的标识列从 int 更改为 bigint,然后重新导入该数据。

当我“bcp in”数据时,我在 bigint 列中得到大量数字,而不是原始标识。我正在使用 to -E 开关来保留身份,并且我已经更改了 bcp 格式文件,使其成为一个固定长度 = 4 列。

这个可以吗?

更新:我正在使用 -N 开关来使用本机数据库类型。我现在尝试使用 -w 开关,但现在我得到了关于强制转换和文本列数据类型的不同错误。

【问题讨论】:

  • 你能把数据复制到临时表而不是导出吗?还是直接改列?
  • 不,这个表有十亿行
  • 将数据留在 SQL Server 中可能比导出和导入数据要快。
  • 对不起,我应该添加的。源服务器和目标服务器是不同的服务器。
  • 写一个简单的SSIS包怎么样?您可以使用批量插入,它将允许您进行相应的转换/转换,并帮助您确定错误的原因(比一般 bcp 错误更好)

标签: sql-server bulkinsert bcp


【解决方案1】:

所以答案是可以的。但不像使用本机数据类型开关 -N 所显示的那样。

我使用了 -w 开关和带有双管道分隔符“||”的 -t。我需要这个分隔符,因为一些文本值有制表符和/或管道。

我尝试了 1000、2500、25000、100000 的批量大小。最佳性能来自 25000。

【讨论】:

    猜你喜欢
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 2023-03-03
    相关资源
    最近更新 更多