Sql server SSIS中的Excel目标字符大小

Sql server SSIS中的Excel目标字符大小,sql-server,export-to-excel,bids,Sql Server,Export To Excel,Bids,我正在尝试使用BIDS将数据从SQL server 2008导出到Excel文件。 来自SQL数据库的字段“DESCRIPTION”之一是VARCHAR(4000)。 我可以将所有内容导出到excel,但excel中的“描述”字段大小限制为unicode 255,并且无论我尝试什么,它都不允许我导出超过255个字符的数据(导出为空)。我试图将SQL字段更改为varchar(max)或ntext,但没有一次成功。我在excel destination的BIDS中使用了advanced editor

我正在尝试使用BIDS将数据从SQL server 2008导出到Excel文件。 来自SQL数据库的字段“DESCRIPTION”之一是VARCHAR(4000)。 我可以将所有内容导出到excel,但excel中的“描述”字段大小限制为unicode 255,并且无论我尝试什么,它都不允许我导出超过255个字符的数据(导出为空)。我试图将SQL字段更改为varchar(max)或ntext,但没有一次成功。我在excel destination的BIDS中使用了advanced editor手动更改“DESCRIPTION”字符长度,但只要我点击“OK”,它就会重置为unicode 255。 谁能帮我解决这个问题

谢谢,
Vishal

您是说excel字段设置为255,对吗?更改SQL字段不会对excel产生影响,您必须修改excel文件。

您是说excel字段设置为255,对吗?更改SQL字段不会对excel产生影响,您必须修改excel文件。

我认为您不能修改excel输出列以写入超过255个字符。为什么不简单地将输出写入csv,它可以在Excel中打开并稍后修改

我不相信您可以修改Excel输出列以写入超过255个字符。为什么不简单地将输出写入csv,它可以在Excel中打开并稍后修改

所以,我做了一些测试。Excel数据转换很时髦,但我想出了一个解决方案。我根据需要创建了一个包含字段的excel电子表格。然后,我在excel中创建了伪数据,字符长度远远大于255,并隐藏了行。然后,我将SSIS数据转换到excel电子表格,该电子表格工作正常。这是一个奇怪且不可取的选择,但它确实有效。

所以,我做了一些测试。Excel数据转换很时髦,但我想出了一个解决方案。我根据需要创建了一个包含字段的excel电子表格。然后,我在excel中创建了伪数据,字符长度远远大于255,并隐藏了行。然后,我将SSIS数据转换到excel电子表格,该电子表格工作正常。这是一个奇怪的、不可取的选项,但它可以工作。

SSIS excel引擎识别前8行的数据类型,并自动将其分配给excel源或目标。即使将excel列定义为备忘录也行不通。我试图通过更改excel引擎的注册表值TypeGuessRows来解决此错误,但也不起作用。因此,我没有其他选择,只能创建一个超过255个字符的虚拟行(第二行)并将其隐藏。Excel source然后用unicode文本流标识该列。如果试图从excel导入数据,则必须在SSIS包中编写一些逻辑以排除此行。我听说这个问题在2010年前后的excel版本中得到了解决。但是,BIDS 2008没有选择2007年之后的任何版本的选项,因此,如果您使用BIDS 2008和excel,这是唯一的解决方案。

SSIS excel引擎会识别前8行的数据类型,并自动将其分配给excel源或目标。即使将excel列定义为备忘录也行不通。我试图通过更改excel引擎的注册表值TypeGuessRows来解决此错误,但也不起作用。因此,我没有其他选择,只能创建一个超过255个字符的虚拟行(第二行)并将其隐藏。Excel source然后用unicode文本流标识该列。如果试图从excel导入数据,则必须在SSIS包中编写一些逻辑以排除此行。我听说这个问题在2010年前后的excel版本中得到了解决。但是BIDS 2008没有选择2007年之后的任何版本的选项,因此这是使用BIDS 2008和excel的唯一解决方案。

问题:当我尝试从sql server表中使用SSIS(2008 R2)中的excel目标时,excel每个单元格仅接受255个字符。SalesForce data loader将不接受由创建的CSV(带有“”文本限定符) ssis平面文件连接管理器。SalesForce只接受CSV(带有“”文本限定符)。SalesForce将接受Excel(2010)导出的CSV

解决方案: 1.创建excel连接管理器,在“excel目标数据流”中设置目标excel文件的名称/路径,并映射元数据。 2.打开一个新的Excel文件,删除所有额外的“工作表”,将“sheet1”重命名为在上述第#1步中创建的文件,选择所有单元格并将其格式设置为“文本”,将所有列标题名称添加到模板工作表的第一行。在需要保存超过255个限制的数据的列中,粘贴超出限制50%的任何字符(以防万一)。这些列现在配置为保存大数据。保存文件,将其命名为TEMPLATE\u Excel\u forLargeCellValues.xlsx 3.将此模板复制到目标连接中:在SSIS控制流中的“Excel目标数据流”之前,创建一个新的“文件系统任务”。创建ssis pkg级别变量以保存模板excel文件的路径/文件名。在“文件系统任务”中,将“IsSourcePathVariable”=TRUE,将“SourceVariable”设置为User::Template\u Excel。将“IsDestinationPathVariable”设置为FALSE,并将“DestinationConnection”设置为上文第1步中的值。设置“操作”=复制文件。“OverwriteDestination”=真。现在,这会将格式化的Excel工作簿/工作表复制到目标文件夹中,文件名为您在上述步骤#1中指定的文件名,并且由于您在需要超过255个字符的列中放置了大量样本数据,因此所有数据都将符合要求。
注意:没有必要延迟任何组件的验证。

问题:当我尝试从sql server表中使用SSIS(2008 R2)中的Excel目标时,Excel每个单元格仅接受255个字符。SalesForce data loader将不接受由创建的CSV(带有“”文本限定符) ssis平面文件