2013-02-17 74 views
1

我需要將2 .txt文件導入到我的SQL Server表中。下面是我的代碼的兩部分 - 第一部分是創建表,第二部分是使用第一個文件填充它。導入csv文件到sql-我的txt有''和,在每個字段之間

拳頭部分是好的,但第二部分給了我一個錯誤 -

Msg 4864, Level 16, State 1, Line 1
Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1, column 1 (TestAcctID).
Msg 4864, Level 16, State 1, Line 1
Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 2, column 1 (TestAcctID).

Create Table TestAcct(TestAcctID int identity(1,1), 
       LastName varchar(30), 
       FirstName varchar(30), 
       PhoneNumber varchar(10), 
       AccountType varchar(5), 
       AccountNumber varchar(30), 
    constraint PKTestAcct Primary Key(TestAcctID)) 

/*Insert info from .txt file*/ 

BULK INSERT TestAcct 
FROM 'c:\Users\lraffi\desktop\File1.txt' 
WITH 
(
FIELDTERMINATOR = ',', 
ROWTERMINATOR = '\n' 
) 
GO 

我想我的問題是,在我的CSV文件中的文本有大約每個字'' - 我已經寫爲FIELD TERMINATOR= ','ROW TERMINATOR= '\n' - 但我怎麼寫也有' '?有沒有人認爲這是問題?

這裏是我的.txt文件內容:

FILE1.TXT: '名字', '姓氏', '賬戶號碼', '******中國','ACCOUNTTYPE '鮑勃', '瓊斯',」 123456789' , '8451111111','RES '簡', 'DOE', '987654321', '8452222222','COM '邁克', '史密斯', '123459876', '8453333333', 'RES'

FILE2.TXT: '的RecordCount = 3' '賬戶號碼', '******中國', 'ACCOUNTTYPE', '姓', '名字' '222222222', '8454444444', 'RES', '比爾',「James的」 333333333','8455555555','COM','John','Barton''444444444','8456666666','RES','William','Stark''End'

+0

您能否提供您正在導入的文本文件中的數據示例? – 2013-02-17 14:27:04

+0

如果問題在於每個單詞周圍都有「',並且你根本不需要這些,那麼在文件中替換一個簡單的替換(因爲我們正在討論兩個文件,這將會很快)。 **與您的錯誤相關:**您的表中的列與文件中的內容不匹配。 TestAcctID是一個INT,是一個身份,但錯誤表明,這不是在文件中的情況。你能發佈文件中的前兩行嗎? – Kprof 2013-02-17 16:11:30

回答

0

我相信e你需要一個格式文件。下面是幾個例子,讓你開始

然後,您將需要考慮的文本識別符(')在格式文件。

<?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="30"/> 
    <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="','" MAX_LENGTH="30"/> 
    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="'\r\n" MAX_LENGTH="30"/> 
</RECORD> 
<ROW> 
    <COLUMN SOURCE="1" NAME="FirstName" xsi:type="SQLNVARCHAR"/> 
    <COLUMN SOURCE="2" NAME="LastName" xsi:type="SQLNVARCHAR"/> 
    <COLUMN SOURCE="3" NAME="AccountNumber" xsi:type="SQLNVARCHAR"/> 
</ROW> 
</BCPFORMAT>