从事数据库工作多年,目前看好分布式NeSQL/HTAP数据库在企业客户市场的发展。未来的主要方向是——致力于 NewSQL/HTAP 数据库的推广普及。
分类: Sybase
2013-10-25 14:35:00
--下面是bcp执行过程中显示的信息
Starting copy...
2 rows copied.
Clock Time (ms.): total = 79 Avg = 39 (25.32 rows per sec.)
3. 在IQ数据库中创建表
create table test1(id int,name char(8),chg_idf timestamp default TIMESTAMP)
4. 编写load table脚本
--load1.sql
message 'load table test1' type info to client ;
LOAD TABLE test1
(
id ,
name ,
chg_idf '\x0a'
)
FROM '/tmp/test1.dat'
FORMAT ASCII
ESCAPES OFF
QUOTES OFF
NOTIFY 500000
WITH CHECKPOINT ON;
5. 执行load table 脚本
dbisql -c "uid=DBA;pwd=sql" -nogui load1.sql
当执行装载脚本时会报如下错误:
Cannot convert 00000000000175ad to a timestamp (column chg_idf)
SQLCODE=-157, ODBC 3 State="07006"
为什么会报这样的错误呢?这是因为ASE中的timestamp实际上是类型binary(8),而IQ中的timestamp是datetime类型,这两者之间是不能转换的。为了解决问题,在IQ
数据库中的表增加一个字段,类型为binary(8)。具体如下:
--在IQ数据库中创建一个新表test2
create table test2 (id int,name char(8), ase_timestamp binary(8), chg_idf timestamp default TIMESTAMP)
--新的load table脚本
message 'load table test1' type info to client ;
LOAD TABLE test2
(
id ,
name ,
ase_timestamp '\x0a'
)
FROM '/tmp/test1.dat'
FORMAT ASCII
ESCAPES OFF
QUOTES OFF
WITH CHECKPOINT ON;
COMMIT;
再次执行load脚本,数据成功装载到IQ