SQL导入向导会降低前导零

时间:2008-12-12 13:11:30

标签: sql-server sql-server-2005 excel import

我已经阅读了有关使用'前缀数字的所有帖子,并在连接字符串中设置IMEX = 1;似乎没有什么可以为我做的。

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

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

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

有什么想法吗?

P.S。我知道注册表更改解决方案,事实上 - 在我的开发框中将值设置为0,但答案让我意识到在PRODUCTION SERVER上没有设置该值:)

4 个答案:

答案 0 :(得分:2)

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

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

long time出现了问题,我是在2003年第一次看到的。

BOL notes on excel import

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

步骤:

  1. 复制列中的所有值并将其粘贴到记事本中。
  2. 现在将列类型更改为Excel工作表中的文本(它将修剪前一个/尾随的零),不用担心。
  3. 转到记事本并复制刚刚粘贴的所有值。
  4. 转到Excel工作表并将值粘贴到同一列中。
  5. 如果您有多个列的值为0,则只需重复相同的操作。 现在您的excel文档已准备好使用零值导入:)。

    快乐的日子。