我正在尝试使用导入和导出向导将小的数据集从CSV文件移动到现有(空)表中。我做了“脚本表为”>“创建为”,以获取该表的所有DML。我知道引起问题的两个字段的字段类型是varchar(50)。我收到此错误消息:
Error 0xc020902a: Data Flow Task 1: The "Source - Reconciliation_dbo_agg_boc_consolidated_csv.Outputs[Flat File Source Output].Columns["ReportScope"]" failed because truncation occurred, and the truncation row disposition on "Source - Reconciliation_dbo_agg_boc_consolidated_csv.Outputs[Flat File Source Output].Columns["ReportScope"]" specifies failure on truncation. A truncation error occurred on the specified object of the specified component.
(SQL Server Import and Export Wizard)
所有字符的最大长度为49,所以我不确定为什么SQL Server抱怨截断。有什么方法可以禁用此错误检查,而只是强制它起作用?它应该按原样工作!谢谢大家。
答案 0 :(得分:0)
有什么办法可以禁用此错误检查,而只是强制它 工作?它应该按原样工作!谢谢大家。
是的。如果您使用的是向导,则可以在运行表架构之前先查看它,然后选中忽略截断的选项。
答案 1 :(得分:0)
所有字符的最大长度为49,所以我不确定为什么使用SQL Server 在抱怨截断。
使用导入向导时,源列的默认数据类型可能为Text
,因此请使用源的高级选项卡将其更改为varchar(50)。检查此link以获得更多详细信息。
答案 2 :(得分:0)
为了安全起见,请检查“源”和“目标”中的列数据类型。如果两者都不相同,则只需在表中将所有列声明为具有最大长度的varchar,例如说varchar(max)或varchar(500),然后看看结果如何。
更改Varchar列的最大长度:
ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500);
然后,即使该列最初定义为NOT NULL,该列也将默认为允许空值。即省略ALTER TABLE中的规范... ALTER COLUMN始终被视为。
ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500) NULL;
根据需要检查列可为空或不为空,只需对其进行更改。
使用以下步骤更好地了解如何使用SQL Server Management Studio将 CSV文件导入数据库:
虽然SQL Server上不提供批量复制和其他批量导入选项,但是您可以使用SQL Server Management Studio将CSV格式的文件导入数据库。
首先,在数据库中创建一个表,要将CSV文件导入其中。创建表后:
使用SQL Server Management Studio登录到数据库。
右键单击数据库,然后选择任务->导入数据...
单击下一步>按钮。
对于数据源,选择“平面文件源”。然后使用浏览按钮选择CSV文件。在单击下一步>按钮之前,请花一些时间配置数据导入。
对于Destination,请选择正确的数据库提供程序(例如对于SQL Server 2012,您可以使用SQL Server Native Client 11.0)。输入服务器名称;选中使用SQL Server身份验证,输入用户名,密码和数据库,然后单击下一步>按钮。
在“选择源表和视图”窗口中,可以在单击“下一步>”按钮之前编辑映射。
选中立即运行,然后单击下一步>按钮。
单击“完成”按钮以运行程序包。