Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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
C# 如何在导入数据库之前验证列_C#_Sql_Sql Server_Ssis - Fatal编程技术网

C# 如何在导入数据库之前验证列

C# 如何在导入数据库之前验证列,c#,sql,sql-server,ssis,C#,Sql,Sql Server,Ssis,我是SSIS的新手 我有c/sql server的背景 我想知道是否有可能在数据进入数据库之前对其进行验证。我正在从|管道分隔的文本文件中获取文本 例如,如果某个数据点为空,则将其更改为0;如果某个数据点的长度为0,则将其更改为nada 我不知道SSIS是否能做到这一点,但如果您能为我指出正确的方向,那将是非常有帮助的。我不知道您是否执意使用SSIS,但我通常用于将文本文件数据导入数据库的基本方法通常分为两个阶段: 使用大容量插入将文件加载到数据库服务器上的临时暂存表中;此暂存表中的每一列都可以

我是SSIS的新手

我有c/sql server的背景

我想知道是否有可能在数据进入数据库之前对其进行验证。我正在从|管道分隔的文本文件中获取文本

例如,如果某个数据点为空,则将其更改为0;如果某个数据点的长度为0,则将其更改为nada


我不知道SSIS是否能做到这一点,但如果您能为我指出正确的方向,那将是非常有帮助的。

我不知道您是否执意使用SSIS,但我通常用于将文本文件数据导入数据库的基本方法通常分为两个阶段:

使用大容量插入将文件加载到数据库服务器上的临时暂存表中;此暂存表中的每一列都可以合理地容忍它们所包含的数据,比如varcharmax。 编写验证例程以更新临时表中的数据,并仔细检查以确保其格式符合您的需要,然后将列转换为最终格式,并将行推送到目标表中。
我喜欢这种方法,主要是因为大容量插入可能会对它吐出的错误有点神秘;使用临时临时暂存表,查看数据集和动态修复错误要比通过文本文件进行根操作容易得多。

我不知道您是否死心使用SSIS,但我通常用于将文本文件数据导入数据库的基本方法通常分为两个阶段:

使用大容量插入将文件加载到数据库服务器上的临时暂存表中;此暂存表中的每一列都可以合理地容忍它们所包含的数据,比如varcharmax。 编写验证例程以更新临时表中的数据,并仔细检查以确保其格式符合您的需要,然后将列转换为最终格式,并将行推送到目标表中。
我喜欢这种方法,主要是因为大容量插入可能会对它吐出的错误有点神秘;使用临时暂存表,可以更轻松地查看数据集并动态修复错误,而不是通过文本文件进行查找。

SSIS可以实现任何功能

在平面文件数据源之后,使用派生列转换。使用如下表达式派生新列

你叫什么名字?娜达:专栏名称

然后在数据源目标中使用此新列


希望能有所帮助。

SSIS可以实现任何功能

在平面文件数据源之后,使用派生列转换。使用如下表达式派生新列

你叫什么名字?娜达:专栏名称

然后在数据源目标中使用此新列


希望有帮助。

使用工具箱中的脚本任务。如果要为集合的每一行编写脚本,请使用Foreach ADO枚举器,并将值作为变量传递给脚本任务。然后,您可以使用Dts.variableName[variableName].Value.FYI访问main方法中的变量-上面的原始答案不是c代码,而是SSIS表达式语法。有关更多信息,请参阅此链接。非常感谢,你认为ssis是解决我问题的正确方法吗?它是相对的。SSIS是公认的DTS解决方案,但我也编写了类似这样的脚本,正如@mikurski在下面建议的快速胜利。我认为SSI更适合于重新执行任务,或在项目中管理的任务。如果正如您所说,您的ssis新手可能是对它的完美介绍,因为它是一项相对直接的任务?否则,我可能会建议使用此链接作为帮助编写脚本。基本上,使用工具箱中的脚本任务将文件中的所有内容拉入临时表并验证内容。如果要为集合的每一行编写脚本,请使用Foreach ADO枚举器,并将值作为变量传递给脚本任务。然后,您可以使用Dts.variableName[variableName].Value.FYI访问main方法中的变量-上面的原始答案不是c代码,而是SSIS表达式语法。有关更多信息,请参阅此链接。非常感谢,你认为ssis是解决我问题的正确方法吗?它是相对的。SSIS是公认的DTS解决方案,但我也编写了类似这样的脚本,正如@mikurski在下面建议的快速胜利。我认为SSI更适合于重新执行任务,或在项目中管理的任务。如果正如您所说,您的ssis新手可能是对它的完美介绍,因为它是一项相对直接的任务?否则,我可能会建议使用此链接作为帮助编写脚本。基本上,将文件中的所有内容拉入临时表并验证内容。