Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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_Bulkinsert - Fatal编程技术网

C# 批量插入查询将数据从文本文件导入数据库表

C# 批量插入查询将数据从文本文件导入数据库表,c#,sql,bulkinsert,C#,Sql,Bulkinsert,我有一个包含25个字段的文本文件,用管道符号分隔 现在,我已经创建了一个控制台应用程序来将这个文本文件数据导入数据库表。在我的数据库表中,我只有10列,用户将从25列中选择10列。因此,我必须将用户选择的10个特定字段导入数据库。我正在使用批量插入查询将文本文件导入控制台应用程序中的临时表中 现在,如何仅将用户选择的10列从文本文件导入数据库表? 如何修改批量插入查询以实现此目的 用户是否可以将哪个源列映射到哪个目标列?如果是这样,您是否需要担心数据类型ie-date/int?如果用户只选择9列

我有一个包含25个字段的文本文件,用管道符号分隔

现在,我已经创建了一个控制台应用程序来将这个文本文件数据导入数据库表。在我的数据库表中,我只有10列,用户将从25列中选择10列。因此,我必须将用户选择的10个特定字段导入数据库。我正在使用批量插入查询将文本文件导入控制台应用程序中的临时表中

现在,如何仅将用户选择的10列从文本文件导入数据库表?
如何修改批量插入查询以实现此目的

用户是否可以将哪个源列映射到哪个目标列?如果是这样,您是否需要担心数据类型ie-date/int?如果用户只选择9列,会发生什么?如果只需要10列,为什么源数据有25列?我假设您需要某种类型的动态SQL,但您在这里到底想做什么?谢谢您的回复。是的,用户会将源列数据映射到目标列。是的,我在数据类型方面也有问题。我有一个UI,用户必须映射所有数据库列和所有10列。因此,不可能只映射9列。源文本文件来自客户端,它们的文件中将有n个列数据,但是,我只选择了映射列。我需要的是,如何使用批量插入从文本文件中单独选择用户映射的列,或者是否有其他方法可以这样做?谢谢,venkatI假设您在文件中有一组预先确定的字段-为什么您的用户提供25个字段的文件?此外,你的用户会有多“聪明”——以及他们会有多大的潜力在你的过程中彻底搞乱一些东西,比如,切换两个类似类型的列。是否有任何方法可以预先限制某些列-尽管这可以“绕过”。通常,您需要将所有varchar列大容量插入到25字段的“temp”表中,然后在实际的10列表中运行一个动态的here SELECT语句。另外,数据类型转换之类的事情呢?例如,用户可能会提供一些看起来像有效的日期/时间/时间戳值,但RDBMS无法自动处理的内容。实际上,对于日期,您可能会遇到一个问题,用户可能会以*MDY格式给您提供日期,但您的服务器希望它是*DMY格式。嘿,看来,您建议的wt是个好主意。可以使用varchar数据类型将中的所有25列导入临时表中的所有列(10个映射列除外)。因为,对于这10个映射列,我可以从映射表中获取数据类型,因此我可以查询并构造一个类似于10个映射列的动态查询,我将把精确的数据类型放在db中,对于15个未映射列,我将放在varcharmax中。现在如果我导入这个,我将得到所有25个,10个精确的列,以及它的真实数据类型。Frm临时表我将选择并移动到我的原始表。我想它会起作用的。我要试试这个。谢谢