Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用导入向导将Excel数据导入SQL Server 2012中的表失败-文本截断_Sql Server_Sql Server 2012_Excel 2010_Sql Import Wizard - Fatal编程技术网

Sql server 使用导入向导将Excel数据导入SQL Server 2012中的表失败-文本截断

Sql server 使用导入向导将Excel数据导入SQL Server 2012中的表失败-文本截断,sql-server,sql-server-2012,excel-2010,sql-import-wizard,Sql Server,Sql Server 2012,Excel 2010,Sql Import Wizard,我有一个Excel文件,每周导入到一个表中 我正在使用Excel 2010和SSMS 2012。本周导入失败,我无法确定原因。我能够成功地将数据导入到一个新表中。新表的表定义与旧表的表定义相匹配,因此这似乎不是问题所在。下面是我收到的错误的屏幕截图。我已经检查了PO标题文本字段,没有任何内容超过我将其作为varchar(255)的数据类型 此外,我对数据进行了排序,只是为了查看是否是某一行导致了问题,并且插入了更多的数据,但我仍然得到了错误,并且它与原始导入尝试不在同一行上。我甚至再次删除并创建

我有一个Excel文件,每周导入到一个表中

我正在使用Excel 2010和SSMS 2012。本周导入失败,我无法确定原因。我能够成功地将数据导入到一个新表中。新表的表定义与旧表的表定义相匹配,因此这似乎不是问题所在。下面是我收到的错误的屏幕截图。我已经检查了PO标题文本字段,没有任何内容超过我将其作为varchar(255)的数据类型

此外,我对数据进行了排序,只是为了查看是否是某一行导致了问题,并且插入了更多的数据,但我仍然得到了错误,并且它与原始导入尝试不在同一行上。我甚至再次删除并创建了原始表,但仍然收到错误


问题可能是
导入/导出向导
SSI
获取数据类型元数据的方式

它使用前几行。如果有一个长字符串(大于255),则数据类型为memo,否则为string

一种解决方法是根据文本列降序的长度对Excel行进行排序

截断文本。

当驱动程序确定Excel列包含文本数据时,驱动程序会根据采样的最长值选择数据类型(字符串或备注)。如果驱动程序在其采样的行中未发现任何长度超过255个字符的值,则会将该列视为255个字符的字符串列,而不是备注列。

因此,长度超过255个字符的值可能会被截断,以便在不截断的情况下从备注列导入数据。您必须确保至少一个采样行中的备注列包含长度超过255个字符的值,或者必须增加驱动程序采样的行数,以包含此类行。

您可以通过增加HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel注册表项下TypeGuessRows的值来增加采样的行数。有关更多信息,请参阅PRB:从Jet 4.0 OLEDB源传输数据失败/错误


你是如何检查这些柱子的长度的?如果不截断,它会给你另一个选择,你有一些奇怪的字符吗?是否可以尝试将目标表中的列更改为
NVARCHAR(MAX)
?如果是这种情况,为什么在使用导入向导时新表会给出varchar(255)列?我还在Excel中对该列执行了len()操作,没有收到超过100个字符的任何内容。@tsqln00b简单测试按Excel文件中文本列降序对行进行排序,保存并运行。如果成功的话,这意味着在你的前8条记录中只有短文本,并且类型识别失败。这是成功的。我以前从来没有这样做过,但从现在起我会这样做。我讨厌卓越@tsqln00b我曾经有过完全相同的案例,从那时起我知道:)