Sql server 批量插入isn';t正在将.txt文件读入SQL Server
我使用大容量插入将文本文件读入SQLServer表。当我尝试使用大容量插入时,我总是会遇到同样的错误,即使我取文本文件的第一行,并将值复制到一个普通的旧insert into语句中,一切都会正常工作。我的数据库stop_times的设置如下:Sql server 批量插入isn';t正在将.txt文件读入SQL Server,sql-server,tsql,sql-server-2012,Sql Server,Tsql,Sql Server 2012,我使用大容量插入将文本文件读入SQLServer表。当我尝试使用大容量插入时,我总是会遇到同样的错误,即使我取文本文件的第一行,并将值复制到一个普通的旧insert into语句中,一切都会正常工作。我的数据库stop_times的设置如下: train_num int, arrival_time time, dept_time time, station_name varchar(50), seq_num, int 我的.txt文件的格式如下 101,'04:30:00','04:30:0
train_num int,
arrival_time time,
dept_time time,
station_name varchar(50),
seq_num, int
我的.txt文件的格式如下
101,'04:30:00','04:30:00','San Jose',1
101,'04:35:00','04:35:00','Santa Clara',2
101,'04:40:00','04:40:00','Lawrence',3
运行
bulk insert dbo.stop_times
from 'C:\Users\amanda\Desktop\stop_times1.txt'
with(
FIELDTERMINATOR=','
)
给我
Msg 4864,第16级,状态1,第1行第1行第1列(序列号)的批量加载数据转换错误(指定代码页的类型不匹配或无效字符)。
Msg 4864,第16级,状态1,第1行
第2行第2列(到达时间)的大容量加载数据转换错误(指定代码页的类型不匹配或无效字符)。
Msg 4864,第16级,状态1,第1行
第3行第2列(到达时间)的大容量加载数据转换错误(指定代码页的类型不匹配或无效字符) 等 但是,将第一行复制并粘贴到
insert into stop_times(train_num, arrival_time, dept_time, station_name, seq_num)
values (101, '04:30:00', '04:30:00', 'San Jose', 1);
工作。我觉得我在批量插入函数中遗漏了一些非常明显的东西,但我对此一无所知。试试这个
bulk insert dbo.stop_times
from 'C:\Users\amanda\Desktop\stop_times1.txt'
with(
FIELDTERMINATOR=',',
ROWTERMINATOR = '\n'
)
如果您在第一行有列名,您需要这样做
bulk insert dbo.stop_times
from 'C:\Users\amanda\Desktop\stop_times1.txt'
with(
FIELDTERMINATOR=',',
ROWTERMINATOR = '\n',
FIRSTROW = 2
)
查看格式化文件提示,确保在运行此查询之前,您尝试导入的文件未在其他任何位置打开。我已确保文件已关闭,并使用行终止符重新运行它。我仍然会遇到这些错误(甚至尝试使用“\r\n”作为行终止符),您是否只尝试使用“\n”来执行此操作,请告诉我您尝试插入这些记录的列的数据类型以及该.txt文件中大约有多少记录。从左到右,数据类型为int、time、time、varchar(50)和int。文本文件中有2275行。仅使用“\n”。所以,我刚才试着读了一行,去掉了《泰晤士报》的引文。这就是问题所在吗?出于某种原因,我认为《泰晤士报》应该有引号。这是因为当您在时间列中大容量插入带有“your_data”的数据时,sql server将其视为字符串数据类型varchar/nvarchar,这就是它抛出错误的原因。