0

我已经阅读了所有关于在数字前加上 ' 并在连接字符串中设置 IMEX=1 的帖子;似乎没有什么对我有用。

设置如下: 包含混合数据的 Excel 列 - 99% 的数字(有些以 0 开头)1% 的文本。

以编程方式导入 SQL Server 2005 表/列类型 - varchar(255)。

导入在本地可以正常工作,但是一旦我将代码移至生产环境(GoDaddy),它就会删除列中的前导 0。

有任何想法吗?

ps 我知道注册表更改解决方案,事实上 - 在我的开发盒上该值设置为 0,但答案让我意识到该值未在 PRODUCTION SERVER 上设置:)

4

4 回答 4

2

是的。Excel 驱动程序仅对前 8 行进行采样以确定数据类型。这意味着它假定列是数字的“bob”不会出现在第 1 到第 8 行中。

目标表列数据类型无关紧要。

这个问题很久了,2003年第一次看到。

BOL 关于 excel 导入的说明

于 2008-12-12T13:50:37.160 回答
2

ISAM 驱动程序仅对前 8 行进行采样,但您可以通过更改注册表来更改该行为:

http://sqlserversd.wordpress.com/2008/09/14/ssis-excel-values-import-as-nulls/

但是,是的,使用 Excel 进行机器对机器的数据传输是一场噩梦……没有其他方法可以发送数据吗?

于 2008-12-12T18:57:08.853 回答
0

我们通常将文件保存为 .csv 文件或 .txt 文件,然后问题就不会发生。

于 2008-12-12T16:06:52.410 回答
0

有一种快速而棘手的方法。按照这些步骤但首先将所有数据/列和行从实际的 excel 表复制到另一个 excel 表中,只是为了安全起见,以便您有实际数据进行比较。

脚步:

  1. 复制列中的所有值并将它们粘贴到记事本中。
  2. 现在在 Excel 工作表中将列类型更改为文本(它将修剪前面/后面的零),不用担心。
  3. 转到记事本并复制您刚才粘贴的所有值。
  4. 转到您的 Excel 工作表并将值粘贴到同一列中。

如果您有不止一列具有 0 值,那么只需重复相同的操作。现在您的 excel 文档已准备好以零值导入 :)。

快乐的时光。

于 2016-02-18T14:48:32.903 回答