2008-12-12 126 views
0

我已阅读所有有关为数字前缀',并在连接字符串中设置IMEX = 1的帖子;没有什么似乎为我做的伎俩。SQL导入向导丢弃前导零

这里是设置:Excel列有混合数据 - 99%的数字(一些从0开始)1%的文本。

PROGRAMATICALLY导入到SQL Server 2005表/列类型 - varchar(255)。

导入在本地很好地工作,但是一旦我将代码移到生产(GoDaddy)中,它将删除列中的前导0。

有什么建议吗?

p.s.我知道注册表变更解决方案,事实上 - 在我的开发箱中,该值设置为0,但答案让我意识到该值未在生产服务器上设置:)

回答

2

的ISAM驱动程序只样本第8行,但您可以通过更改注册表改变这种行为:

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

但是,是的,使用Excel的机器到机器数据传输是一场噩梦...有没有其他方式可以发送数据?

+0

即使我在注册表中改变了这个值,这个答案让我意识到生产服务器上的值没有改变:) – 2008-12-12 22:01:19

2

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

目标表列数据类型是不相关的。

这个问题一直存在的long time,我第一次在2003年看到它。

BOL notes on excel import

0

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

0

这是一个快速和棘手的方法。遵循这些步骤,但首先将实际Excel表格中的所有数据/列和行复制到另一个Excel表格中,以保证安全,以便与实际数据进行比较。

步骤:

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

如果您有多个具有0个值的列,请重复相同的操作。 现在您的Excel文档已准备好导入零值:)。

快乐的日子。