簡體   English   中英

在 SQL Server 表中的表中導入 csv 數據時添加額外的列

[英]Add extra column while importing csv data in table in SQL server table

我正在嘗試在 SQL Server 的現有表中導入 csv 文件。 我設法使用了導入數據向導,它提供了強大的功能來導入 csv 文件並映射到現有表中的列。 但是,這里的問題是表有 5 個數據字段內容,而 csv 文件有 4 個數據字段內容。 我希望添加這個額外的字段並將一個特定的值硬編碼到它,因為表列被定義為非空。

您需要按照以下步驟將 CSV 文件導入帶有附加列的 SQL Server 表。

  1. 假設您有一個包含兩列(名字、姓氏)的表。 您可以使用 BULK INSERT 插入它們。
CREATE TABLE NameList
(
FirstName varchar(40),
LastName varchar(40)
)
  1. 您有格式文件,它定義了要為目標表插入的兩列。
<?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="," MAX_LENGTH="40" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="40" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="FirstName" xsi:type="SQLVARYCHAR"/>
  <COLUMN SOURCE="2" NAME="LastName" xsi:type="SQLVARYCHAR"/>
 </ROW>
</BCPFORMAT>
  1. 如果要添加 NOT NULL 的新列,您可以添加具有默認值的新列並按如下所示進行批量插入:
ALTER TABLE dbo.NameList ADD Test varchar(30) not null default 'test' 
  1. BULK INSERT 到表將為附加列測試添加默認值
TRUNCATE TABLE dbo.NameList; -- (for testing)
BULK INSERT dbo.NameList
FROM 'c:\dev\NameList.csv'
WITH (FORMATFILE = 'C:\dev\NameListFormat.xml');
GO

現在,您將擁有附加列的默認值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM