1

我需要将 2 个.txt文件导入到我的 SQL Server 表中。下面是我的代码的两部分 - 首先是创建表,第二部分是用第一个文件填充它。

第一部分很好,但第二部分给了我一个错误-

消息 4864,级别 16,状态 1,第 1
行第 1 行第 1 列 (TestAcctID) 的批量加载数据转换错误(指定代码页的类型不匹配或无效字符)。
消息 4864,级别 16,状态 1,第 1
行第 2 行第 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= ','and写过ROW TERMINATOR= '\n'- 但是我如何写还有' '呢?有没有人认为这是问题所在?

这是我的 .txt 文件的内容:

File1.txt:'FirstName','LastName','AccountNumber','PhoneNumber','AccountType''Bob','Jones','123456789','8451111111','RES''Jane','DOE', '987654321'、'8452222222'、'COM'、'Mike'、'Smith'、'123459876'、'8453333333'、'RES'

File2.txt:'RecordCount=3''AccountNumber','PhoneNumber','AccountType','FirstName','LastName','222222222','8454444444','RES','Bill','James''333333333' ,'8455555555', 'COM','John','Barton' '444444444','8456666666','RES','William', 'Stark' 'End'

4

1 回答 1

0

我相信您将需要一个格式文件。这里有几个示例可以帮助您入门

然后,您需要考虑格式文件中的文本限定符 (')。

<?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>
于 2013-02-18T03:40:28.490 回答