[freetds] bcp CHAR behavior
Michael Peppler
mpeppler at peppler.org
Fri Apr 16 10:53:02 EDT 2004
On Thu, 2004-04-15 at 19:41, James K. Lowden wrote:
> src/dblib/bcp.c:1107:
>
> if (desttype == SYBVARCHAR) {
> bcpcol->data_size =
> _bcp_rtrim_varchar((char *) bcpcol->data, converted_data_size);
> } else {
> bcpcol->data_size = converted_data_size;
> }
>
> I ran across what might be a little bug in the above code today. I was
> loading a tab-delimited file; column two in the table was a char(2).
FYI - here's what Sybase's bcp does:
create table fts_char(c1 char(20), c2 varchar(20));
cat /tmp/fts_char.bcp
ABC CDE
ABC CDE
Actual data getting sent (checked via Ribo)
Raw PDU Data
Unformatted Contents [64]:
0x1E00010041424320202020202020202020202020202020201E00434445021B181E00010041424320202020202020202020202020202020201E00434445021B18
Note that the char(20) column is *padded* to the correct width, while
the varchar() column is trimmed. I suspect that you will have to become
a little more precise for char() columns, and either pad or truncate as
needed to match the target column's width.
I've got the full Ribo trace of the session, if you want.
Michael
--
Michael Peppler Data Migrations, Inc.
mpeppler at peppler.org http://www.peppler.org/
Sybase T-SQL/OpenClient/OpenServer/C/Perl developer available for short or
long term contract positions - http://www.peppler.org/resume.html
More information about the FreeTDS
mailing list