When data is migrated from Sybase to DB2, problems arise from the MONEY, IMAGE, FLOAT and DATE data types. The format in which Sybase stores data is often different than DB2, which becomes a problem when manually porting from one to the other. For example, Sybase and DB2 DATE formats are entirely different. If a Sybase data column is loaded into DB2, it will give an error. Use the script below to overcome this problem.
Before doing BCP out from Sybase, create a view that will have the DATE datatype as supported in DB2. Then BCP out this view. While loading this into DB2, use the timestamp format but make sure it is done at the DB2 prompt (eg, db2 => select ...).
use tempdb go create view test_v as select <col1>,<col2> ,convert(char(10),<date_col>,102)+'.'+convert(char(8),<date_col>,108)+".000000" <date_col> go
Now BCP out.
bcp tempdb..test_v out test_v.out -U<username> -S<servername> -P<pwd> -c -t"#" -r"n"
Then, drop the above view. Finally, bring TEST_V.OUT to the DB2 server.
db2=> load from test_v.out of del modified by timestampformat = "YYYY-MM-DD-HH:MM:SS:UUUUUU" insert/replace into test_db2;
For More Information
- Feedback: E-mail the editor with your thoughts about this tip.
- More tips: Hundreds of free DB2 tips and scripts.
- Tip contest: Have a DB2 tip to offer your fellow DBAs and developers? The best tips submitted will receive a cool prize -- submit your tip today!
- Ask the Experts: Our SQL, database design, Oracle, SQL Server, DB2, metadata, and data warehousing gurus are waiting to answer your toughest questions.
- Forums: Ask your technical DB2 questions--or help out your peers by answering them--in our active forums.
- Best Web Links: DB2 tips, tutorials, and scripts from around the Web.
This was first published in October 2002