Re: Binary data migration from MSSQL

From: "Roman Fail" <rfail(at)posportal(dot)com>
To: "Joe Conway" <mail(at)joeconway(dot)com>
Cc: <pgsql-general(at)postgresql(dot)org>
Subject: Re: Binary data migration from MSSQL
Date: 2003-01-08 02:31:50
Message-ID: 9B1C77393DED0D4B9DAA1AA1742942DA0E4BDF@pos_pdc.posportal.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

>> ** bcp: I'd like to use bcp to do a text import, but I can't figure out how
>> to make the binary data work on either end. It appears to me that Postgres
>> COPY requires literal binary data to be in octal format (e.g. '\\047').
>> bcp outputs the binary data as an non-escaped ASCII string of hex values
>> (e.g. DF9B52A3). I guess I could write a Java program to convert the hex to
>> escaped octal, then run COPY. This would probably be pretty slow (both from
>> a 20-million row performance standpoint and my personal productivity).
>>
>> Is there a better way to do this?

>I'd lean toward bcp as the fastest method, even if you need to do some data
>massaging. In MSSQL 2000 it appears that bcp can bulk copy a query in similar
>fashion to a table. Perhaps you could do the binary-to-octal transformation in
>the export query from MSSQL?
>
>Joe

Thanks for the idea, Joe. I wrote a 'varbinary-to-octal_string' UDF on the MSSQL Server that I could call within a query on the bcp command line. After some tweaking, it worked great and takes about an hour to dump all 20 million rows to text (which I think is pretty fast!).

Wes Sheldah suggested modifying the bcp output with a perl script, but I opted not to do it that way. Although I don't know perl, I could have just as easily used Java. The drawback of doing it this way is that it's harder for others to follow if there is another language involved. I know everyone who wants to do this will already have a MSSQL server, and that's all you need to create the modified file.

I'd be happy to write up what I did and contribute it to techdocs, if someone would let me know where to send the document. I looked around on the techdocs site and didn't see any instructions. I'm still curious why the binary data won't migrate using pgAdminII, but I guess I'll ask that question on another list.

Roman Fail
Sr. Web Application Developer
POS Portal, Inc.

Responses

Browse pgsql-general by date

  From Date Subject
Next Message davoid 2003-01-08 02:54:38 PostgreSQL + Visual Basic .NET
Previous Message Barry Lind 2003-01-08 01:34:48 Re: ArrayIndexOutOfBoundsException in Encoding.decodeUTF8()