我正在尝试将Excel工作表导入SQL数据库。这张表有700多列,但我知道有255列的限制。是否有工作要在上传到数据库时包含所有列。我在选择Excel版本时选择了Excel 2007。
答案 0 :(得分:1)
但是,通过转换为.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 行以确定每列的宽度(奇怪!)。