【问题标题】:Bulk insert in a specific column in SQL Server在 SQL Server 的特定列中批量插入
【发布时间】:2013-02-16 16:37:19
【问题描述】:

我有一个表dic,它有两列englishbangla。我想使用文本文件中的批量插入仅将数据插入到 bangla 列中。

我试过可以插入2列

BULK INSERT dic
FROM 'C:\Users\Imon-Bayazid\Desktop\wordddd\good one\test.txt'
WITH
(
   FIELDTERMINATOR = '\n',
   ROWTERMINATOR = '\n'
)  

但是我怎样才能进入一个特定的列???

【问题讨论】:

  • 你的英文栏目不为空吗?
  • 您要插入或更新列?同时显示表格方案。
  • 英语或孟加拉语列可能有空值...@BhushanFirake
  • 我想在该表上插入大量数据@HamletHakobyan
  • 请提供表格和文本文件结构。

标签: c# sql-server database bulkinsert


【解决方案1】:

您可以使用format file 从源文件中的字段映射到目标表中的字段。

我假设您知道批量插入仅用于插入新行,而不用于更新。

所以你可能有这样的格式文件:

<?xml version="1.0"?>
<BCPFORMAT 
     xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <RECORD>
  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\n"/>
  ... other fields?
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="bangla"/>
 </ROW>
</BCPFORMAT>

表 'dic' 中的任何其他列都需要可以为空或具有默认值。

然后将格式文件指定为 BULK INSERT 语句的选项

BULK INSERT dic
FROM 'C:\Users\Imon-Bayazid\Desktop\wordddd\good one\test.txt'
WITH
(
   FIELDTERMINATOR = '\n',
   ROWTERMINATOR = '\n',
   FORMATFILE = 'path to my format file.xml'
) 

【讨论】:

  • 我不明白如何以及在哪里使用您的上述代码??我使用了我的代码并将它们放入 visual stdio 2010 query 。 @菲尔
  • 您有 SQL Server Management Studio 吗?您需要在磁盘上创建一个格式文件,例如C:\Users\Imon-Bayazid\Desktop\wordddd\good one\format.xml 并在批量插入中引用它。
  • 不,我没有这个。我只是使用具有默认 sql server 的 Visual stdio 10
  • 格式文件保存在哪里????我正在使用 vs10 我在哪里保存格式文件在 vs10 中???
  • 将格式文件保存在您想要的任何位置,然后指定路径,例如FORMATFILE = 'C:\Users\Imon-Bayazid\Desktop\wordddd\good one\format.xml'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-24
  • 1970-01-01
  • 1970-01-01
  • 2013-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多