SQL导入向导丢弃前导零
我已经阅读了所有有关为数字加前缀的post,并在连接string中设置IMEX = 1; 似乎没有什么好办法给我。
这里是设置:混合数据的Excel列 – 99%的数字(一些从0开始)1%的文本。
PROGRAMATICALLY导入到SQL Server 2005表/列types – varchar(255)。
导入在本地工作正常,但是一旦我将代码移到生产(GoDaddy),它将删除列中的前导0。
有任何想法吗?
ps我知道registry变更的解决scheme,事实上 – 价值被设置为0在我的开发盒,但答案让我意识到价值没有设置在生产服务器:)
ISAM驱动程序仅对前8行进行采样,但可以通过registry更改来更改该行为:
http://sqlserversd.wordpress.com/2008/09/14/ssis-excel-values-import-as-nulls/
但是,是的,使用Excel进行机器到机器的数据传输是一场噩梦…难道没有其他办法可以发送数据吗?
是。 Excel驱动程序仅采样前8行以确定数据types。 这意味着它假定列是数字是“bob”不出现在第1到第8行。
目标表列数据types是不相关的。
这个问题已经存在很长时间了 ,我第一次看到它在2003年。
BOL关于excel导入的注意事项
我们通常将文件保存为.csv文件或.txt文件,然后问题不会发生。
这是一个快速和棘手的方式。 遵循这些步骤,但首先将实际的Excel表中的所有数据/列和行复制到另一个Excel表中,以保证安全性,从而获得与之相比较的实际数据。
脚步:
- 复制列中的所有值并将其粘贴到记事本中。
- 现在将列types更改为Excel表格中的文本(它将修剪前后的零),不用担心。
- 转到记事本并复制刚刚粘贴的所有值。
- 转到您的Excel表格,并粘贴在同一列的值。
如果您有多个具有0值的列,请重复相同的操作。 现在你的excel文件已经准备好用零值来导入:)。
快乐的时光。