我得到的转换错误,当我尝试导入文本文件到我的数据库。 下面是我收到的错误信息:
批量加载数据转换错误在行1(类型不匹配或无效字符为指定的代码页),第4栏(年)。
这里是我的查询代码:
CREATE TABLE Students
(
StudentNo Integer NOT NULL Primary Key,
FirstName VARCHAR(40) NOT NULL,
LastName VARCHAR(40) NOT NULL,
Year Integer,
GPA Float NULL
);
下面是从文本文件中的样本数据:
100,Christoph,Van Gerwen,2011
101,Anar,Cooke,2011
102,Douglis,Rudinow,2008
我想我知道问题is..Below是我的批量插入的代码:
use xta9354
bulk insert xta9354.dbo.Students
from 'd:\userdata\xta9_Students.txt'
with (fieldterminator = ',',rowterminator = '\n')
随着样本数据,也没有“”后年属性甚至尽管还有另一个属性年前后级是NULL
有人可以告诉我如何解决这一问题?
尝试使用格式文件 ,因为你的数据文件只有4列。 否则,请尝试OPENROWSET
或使用临时表。
myTestFormatFiles.Fmt
可能看起来像:
9.0
4
1 SQLINT 0 3 "," 1 StudentNo ""
2 SQLCHAR 0 100 "," 2 FirstName SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 100 "," 3 LastName SQL_Latin1_General_CP1_CI_AS
4 SQLINT 0 4 "\r\n" 4 Year "
http://i.msdn.microsoft.com/dynimg/IC45684.gif
本教程上跳过与一列BULK INSERT
也可能会有帮助。
那么你的声明将如下所示:
USE xta9354
GO
BULK INSERT xta9354.dbo.Students
FROM 'd:\userdata\xta9_Students.txt'
WITH (FORMATFILE = 'C:\myTestFormatFiles.Fmt')
就我而言,我正在处理,是由Hadoop的生成在Linux中的文件。 当我试图导入到SQL我有这个问题。 的修复卷绕法是使用关于“线进料” 0X0A十六进制值。 它也曾为批量插入
bulk insert table from 'file'
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '0x0a')
我们使用批量插入为好。 我们上传的文件是从外部方发送。 一段时间后故障排除,我意识到,他们的文件已经在它逗号列。 只是另一件事是寻找...
上述选项适用于谷歌大查询文件也。 我导出的表中的数据goodle云存储,并从那里下载。 在加载相同的到SQL Server正面临着这一问题,并指定行分隔符为后能够成功地加载文件
ROWTERMINATOR = '0x0a'
注意头记录以及与指定
FIRSTROW = 2
我从谷歌的BigQuery数据文件导出最终块看起来是这样的。
BULK INSERT TABLENAME
FROM 'C:\ETL\Data\BigQuery\In\FILENAME.csv'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ',', --CSV field delimiter
ROWTERMINATOR = '0x0a',--Files are generated with this row terminator in Google Bigquery
TABLOCK
)
新增MSSQLSERVER完全访问的文件夹,diskadmin和bulkadmin服务器角色。
在我的C#应用程序,用于批量插入命令做准备时,
string strsql = "BULK INSERT PWCR_Contractor_vw_TEST FROM '" + strFileName + "' WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\\n')";
和我得到这个错误 - 批量负载数据转换错误(类型不匹配或无效字符为指定的代码页)为第1行,第8栏(STATUS)。
我看了看我的日志,发现终结者变成“”而不是“\ n”。 OLE DB提供程序“BULK”链接服务器“(空)”报告错误。 提供程序未给出有关错误的任何信息:
Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)". Query :BULK INSERT PWCR_Contractor_vw_TEST FROM 'G:\NEWSTAGEWWW\CalAtlasToPWCR\Results\parsedRegistration.csv' WITH (FIELDTERMINATOR = ',', **ROWTERMINATOR = ''**)
因此,我增加额外逃到ROWTERMINATOR -字符串STRSQL = “BULK INSERT PWCR_Contractor_vw_TEST FROM“” + strFileName +“ 'WITH(FIELDTERMINATOR =',',ROWTERMINATOR = '\\ N')“;
而现在,它成功地插入。
Bulk Insert SQL - ---> BULK INSERT PWCR_Contractor_vw_TEST FROM 'G:\\NEWSTAGEWWW\\CalAtlasToPWCR\\Results\\parsedRegistration.csv' WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n')
Bulk Insert to PWCR_Contractor_vw_TEST successful... ---> clsDatase.PerformBulkInsert
文章来源: Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1, column 4 (Year)