0

大家好,我正在尝试将 .dat 文件(从 sybase 卸载)中的数据批量插入到我创建的表中。

这是表定义:

CREATE TABLE dbo."GCK_KioskSetupOptions" (
  "SMTPIPAddress"         varchar(128) NULL
  ,"SMTPPort"            varchar(20) NULL
  ,"POP3IPAddress"         varchar(128) NULL
  ,"POP3Port"            varchar(20) NULL
  ,"AutoLogOffDelay"        integer NULL
  ,"AllowUserToPrint"        bit NOT NULL
  ,"AllowAttachment"        bit NOT NULL
  ,"MaxMessageSize"         integer NULL
  ,"BillingCodeOptionID"      integer NOT NULL
  ,"MaxMessage"           integer NULL
  ,"AllowUserToImport"       bit NOT NULL
  ,"ProtectUserWithPassword"    varchar(50) NULL
  ,"DefaultEncoding"        varchar(50) NULL
  ,"EnableMessageLimit"       bit NULL
  ,"GlobalMessageLimit"       integer NULL DEFAULT 30
  ,"AllowSetMessagePriority"    bit NOT NULL DEFAULT 0
)
go

.dat 文件中只有一行(因为数据库为空)需要插入到上面提到的表中

这是 .dat 文件数据格式

'127.0.0.1','25','127.0.0.1','110',10,1,1,400,2,250,1,

这是批量插入命令

BULK
INSERT GCK_KioskSetupOptions
FROM 'C:\Program Files\Globe Wireless\WebMail\Database\Defaults\Data\404.dat'
WITH
(
  FIELDTERMINATOR = ',',
  ROWTERMINATOR = '\n'
)
GO

在 SQLServer Management Studio 中运行此命令,我收到这些错误消息 4832,级别 16,状态 1,第 2 行批量加载:在数据文件中遇到意外的文件结尾。消息 7399,级别 16,状态 1,第 2 行链接服务器“(null)”的 OLE DB 提供程序“BULK”报告了错误。提供商没有提供有关该错误的任何信息。消息 7330,级别 16,状态 2,第 2 行无法从链接服务器“(null)”的 OLE DB 提供程序“BULK”获取行。

谁能帮我解决这个问题?我实际上正在从 Sybase SQL Anywhere 11 到 SQL Server 2008 R2 Express 进行数据迁移,这是我在尝试将数据从 .dat 文件导入 SQL Server 2008 r2 EXPRESS 时遇到的第一个问题桌子。

谢谢

4

1 回答 1

0

从外观上看,示例数据文件中有 ll 字段,但表中有 16 列。

我认为您需要使用默认值填充输入。

而不仅仅是

'127.0.0.1','25','127.0.0.1','110',10,1,1,400,2,250,1,

你需要

'127.0.0.1','25','127.0.0.1','110',10,1,1,400,2,250,1,,,,,

于 2011-07-22T13:24:26.913 回答