2016-01-28 60 views
0

我想将excel表导入SQL数据库。此表有700多列,但我知道有255列的限制。在上传到数据库时是否有解决所有列的工作?我在选择Excel版本时选择了Excel 2007。解决excel中SQL导入导出向导的255列限制问题

+0

您可以拥有任意数量的列,只要您超过某个限制,就可能导致截断值。 –

+0

考虑使用Excel VBA对SQL Server进行ODBC/OLEDB调用的编码解决方案。不应该强加这样的限制, – Parfait

回答

0

255列的限制是针对Excel 97-2003的。

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

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

1

不幸的是,我在网上看到的资源中,并不是一个简单的方法来做到这一点。我尝试了上述选择“Excel 2007”的解决方案,但这对我没有任何作用。人们会期望Excel和SQL Server具有更紧密的集成。

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

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

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

2)在第二个选项卡('列')中,确保列分隔符被选为Tab。我更喜欢CSV格式,因为在我的数据集中有一些带有逗号的重文本。 3)如果映射已经结束,在第三个选项卡('高级')中,您应该使用其自然默认值获得所有列的清单。如上所述,我隔离哪些列的值超过了DT_STR(50)的默认值并将其更改为DT_TEXT。

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