使用帶有較多欄位的資料檔案

來源:互聯網
上載者:User
使用帶有較多欄位的資料檔案

在某些情況下,資料檔案包含的欄位數可能多於表中的列數。例如,New_auth.dat 資料檔案(ASCII 格式,即字元格式設定)包含 authors2 表中不包含的兩個欄位(agesalutation)。這兩個欄位將在大量複製過程中忽略(即跳過)。

New_auth.dat 檔案的內容如下:

777-77-7777,Smith,Chris,303 555-1213,27 College Ave,Denver,CO,80220,1,28,Ms.888-88-8888,Doe,John,206 555-1214,123 Maple Street,Seattle,WA,95099,0,35,Mr.999-99-9999,Door,Jane,406 555-1234,45 East Main,Bozeman,MT,59715,1,33,Mrs.

若要有選擇地只將所需資料大量複製到 authors2 的適當列中,請使用以下命令建立預設的格式檔案 (Authors.fmt):

bcp pubs..authors2 out c:\authors.txt -Sservername -Usa -Ppassword

bcp 工具 + 生產力將提示輸入 authors2 中每一列的檔案儲存體類型、前置長度、欄位長度和欄位結束字元。每列的欄位結束字元均應為逗號 (,)。另外,因為該資料檔案為 ASCII 檔案,所以 contract 列的檔案儲存體類型是 char。在提示輸入格式檔案名稱時,請指定 Authors.fmt。

Authors.fmt 檔案的內容如下:

8.091  SQLCHAR  0  11 ","      1  au_id       SQL_Latin1_General_Cp437_BIN2  SQLCHAR  0  40 ","      2  au_lname    SQL_Latin1_General_Cp437_BIN3  SQLCHAR  0  20 ","      3  au_fname    SQL_Latin1_General_Cp437_BIN4  SQLCHAR  0  12 ","      4  phone       SQL_Latin1_General_Cp437_BIN5  SQLCHAR  0  40 ","      5  address     SQL_Latin1_General_Cp437_BIN6  SQLCHAR  0  20 ","      6  city        SQL_Latin1_General_Cp437_BIN7  SQLCHAR  0  2  ","      7  state       SQL_Latin1_General_Cp437_BIN8  SQLCHAR  0  5  ","      8  zip         SQL_Latin1_General_Cp437_BIN9  SQLCHAR  0  1  "\r\n"   9  contract    SQL_Latin1_General_Cp437_BIN

該格式檔案包含將資料從資料檔案大量複製到 Microsoft SQL Server 表所需的全部資訊。但是,需要使用文字編輯器進一步修改格式檔案,以反映新添加的兩列:agesalutation。格式檔案的第二行指定了列數,該列數現在應改為 11,因為資料檔案中有 11 個欄位。需要在格式檔案的末尾添加兩個新行,以便提供新增欄位的格式資訊。行終止符需要從 contract 列移到 salutation 列,agesalutation 列的伺服器列號(格式檔案中的第六個欄位)應為 0:

8.0111  SQLCHAR  0  11 ","      1  au_id       SQL_Latin1_General_Cp437_BIN2  SQLCHAR  0  40 ","      2  au_lname    SQL_Latin1_General_Cp437_BIN3  SQLCHAR  0  20 ","      3  au_fname    SQL_Latin1_General_Cp437_BIN4  SQLCHAR  0  12 ","      4  phone       SQL_Latin1_General_Cp437_BIN5  SQLCHAR  0  40 ","      5  address     SQL_Latin1_General_Cp437_BIN6  SQLCHAR  0  20 ","      6  city        SQL_Latin1_General_Cp437_BIN7  SQLCHAR  0  2  ","      7  state       SQL_Latin1_General_Cp437_BIN8  SQLCHAR  0  5  ","      8  zip         SQL_Latin1_General_Cp437_BIN9  SQLCHAR  0  1  ","      9  contract    SQL_Latin1_General_Cp437_BIN10 SQLCHAR  0  0  ","      0  age         SQL_Latin1_General_Cp437_BIN11 SQLCHAR  0  0  "\r\n"   0  salutation  SQL_Latin1_General_Cp437_BIN

現在若要將該資料檔案中的資料大量複製到 authors2 中,可以使用以下命令:

bcp pubs..authors2 in c:\new_auth.dat -fc:\authors.fmt -Sservername -Usa -Ppassword

另外,也可以在 SQL 查詢分析器這樣的查詢工具中使用 BULK INSERT 語句來大量複製資料:

BULK INSERT pubs..authors2 FROM 'c:\new_auth.dat' WITH (FORMATFILE = 'c:\authors.fmt')

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.