在excel的SQL导入导出向导中,可以解决255列限制问题

时间:2016-01-28 18:06:16

标签: sql-server excel

我正在尝试将Excel工作表导入SQL数据库。这张表有700多列,但我知道有255列的限制。是否有工作要在上传到数据库时包含所有列。我在选择Excel版本时选择了Excel 2007。

3 个答案:

答案 0 :(得分:1)

可悲的是,在网上看到的资源中,没有一种简单的方法可以做到这一点。我尝试了上面选择“Excel 2007”的解决方案,但这对我不起作用。人们可以期望Excel和SQL Server具有更紧密的集成。

但是,通过转换为.txt文件然后解决一些截断错误,我设法加载了我的数据集。以下是我的用例和流程的一些细节。

我有一个相当小的数据集行(~200行)但有一大组列(+500列)。我首先将Excel文件转换为文本“制表符分隔”文件(即* .txt)。在通过SQL Server导入和导出向导加载时,我遇到两个截断错误:一个,一些列名大于128个字符和两个,默认数据类型为DT_STR的某些行中的值的长度更大超过50(默认输出列宽)。对于第一个错误,我只是将列重命名为更短的内容。对于第二个错误,我手动运行了一个长度计数,并找到了每列的最大值,这使我可以隔离哪些列会引发错误。我按照以下步骤操作:

1)在SQL Server Import&导出向导“常规”选项卡,我选择了“平面文件源”并接受了所有正常默认值。

2)在第二个选项卡('Columns')中,确保选择列分隔符作为Tab。我之所以喜欢这种格式,因为我的数据集中有一些带有逗号的重文。

3)如果映射完成,在第三个选项卡(“高级”)中,您应该获得所有列的自然默认值的清单。如上所述,我隔离了哪些列的值超过了默认值DT_STR(50)并将其更改为DT_TEXT。

4)其余步骤只是指定目的地,以及是否要保存SSIS步骤。

答案 1 :(得分:0)

255列的限制适用于Excel 97-2003。

选择Excel 2007作为Excel版本,选择该版本,您应该能够导入最多16,000列。

或尝试将Excel数据文件另存为文本分隔文件,然后选择“平面文件”。

答案 2 :(得分:0)

一个更简单、直接的解决方案:在 excel 上,对您的行进行排序,以便将具有最长值的行移至顶部。看起来导入向导只查看数据文件的前 8 行以确定每列的宽度(奇怪!)。

来源:How does one change the default varchar 255 of a column when importing data from Excel to Sql Server using Import Export Wizard?