【问题标题】:SQL import wizard drops leading zeroSQL 导入向导删除前导零
【发布时间】:2010-09-26 15:14:31
【问题描述】:

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

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

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

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

有什么想法吗?

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 即使我在注册表中更改了该值,但这个答案让我意识到 PRODUCTION SERVER 上的值没有更改:)
    • 现在这让我哈哈大笑,典型的“但它适用于我的机器”的问题 :)
    【解决方案2】:

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

    目标表列数据类型无关。

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

    BOL notes on excel import

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        步骤:

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

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

        快乐的日子。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多