Solved

BUL:K INSERT OF UNICODE FILE

Posted on 2002-04-30
6
332 Views
Last Modified: 2008-02-01

I am trying to use BULK INSERT to populate a table in a SQL Server 2000 database from a unicode file.  I am using the following:

BULK INSERT tblTable FROM 'E:\File.txt'
 WITH (
     CHECK_CONSTRAINTS,
     DATAFILETYPE = 'widechar',
     FIELDTERMINATOR = '\0',
     FIRSTROW = 2,
     KEEPIDENTITY,  
     MAXERRORS = 0,  
     ROWTERMINATOR = '\0\n',
     TABLOCK )

but I'm getting an error - "Bulk insert data conversion error (truncation) for row 2, column 1 (fkColumnName)."

The same paramaters (except DATAFILETYPE) for BULK INSERT work fine when the file is ASCII. I have tried \0\0 for FIELDTERMINATOR and \0\0\n for ROWTERMINATOR but this doesn't work.

Anybody any ideas?

0
Comment
Question by:DJWalker
  • 3
  • 3
6 Comments
 
LVL 142

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 6980661
I think that the codepage option might help.

CODEPAGE [ = 'ACP' | 'OEM' | 'RAW' | 'code_page' ]

Specifies the code page of the data in the data file. CODEPAGE is relevant only if the data contains char, varchar, or text columns with character values greater than 127 or less than 32.

CODEPAGE value Description
ACP Columns of char, varchar, or text data type are converted from the ANSI/Microsoft Windows® code page (ISO 1252) to the SQL Server code page.
OEM (default) Columns of char, varchar, or text data type are converted from the system OEM code page to the SQL Server code page.
RAW No conversion from one code page to another occurs; this is the fastest option.
code_page Specific code page number, for example, 850

Now, if the column in the table is shorter than the data to be inserted, this would explain the "truncation" error...
As the row/columns are indicated, I would look at the file to see which are the differences to the previous rows...

CHeers


0
 

Author Comment

by:DJWalker
ID: 6980781

Thanks for a quick reply.

I have tried your suggestion, but it makes no difference.

One of my tables does have a char column in it, but apart from the NULL terminator, there are no characters in the file greater than 127 or less than 32.

The row and column are the first row and the first column being inserted, the column being a single digit in one case.

The unicode and ASCII data are both the same, ie ASCII and unicode versions of the same file so I think the data itself should be OK.




0
 
LVL 142

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 6980813
could you either post the first lines of the file here, or send it to me?

What i suspect is that the value in the file is longer than what is defined in the database...

CHeers
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 

Author Comment

by:DJWalker
ID: 6982850
I'll send the file by e-mail.

Thanks.
0
 
LVL 142

Accepted Solution

by:
Guy Hengel [angelIII / a3] earned 300 total points
ID: 6985218
First, i can confirm that i get also the problems with your files...
BUT if I use BCP:
bcp testdatabase.dbo.tbltable in c:\tblTable_uni.txt -F2 -w -t\0 -r\0\n -Usa -P
Everything is fine and dandy...

If nothing else works, I can only suggest to use that...

You might try to use the FORMATFILE option, using the parameters of bcp above into a file...

CHeers
0
 

Author Comment

by:DJWalker
ID: 6985461

Thanks for your help.
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Suggested Solutions

Introduction In my previous article (http://www.experts-exchange.com/Microsoft/Development/MS-SQL-Server/SSIS/A_9150-Loading-XML-Using-SSIS.html) I showed you how the XML Source component can be used to load XML files into a SQL Server database, us…
Load balancing is the method of dividing the total amount of work performed by one computer between two or more computers. Its aim is to get more work done in the same amount of time, ensuring that all the users get served faster.
Viewers will learn how to use the INSERT statement to insert data into their tables. It will also introduce the NULL statement, to show them what happens when no value is giving for any given column.
Viewers will learn how to use the SELECT statement in SQL and will be exposed to the many uses the SELECT statement has.

759 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

23 Experts available now in Live!

Get 1:1 Help Now