可以在没有列表的情况下使用LOAD TABLE吗?
问题描述:
我习惯使用Sybase ASE使用bcp命令行工具卸载和加载数据。这并不要求您指定任何列名称。可以在没有列表的情况下使用LOAD TABLE吗?
据我所知,等同于Sybase IQ中BCP是LOAD TABLE命令,但我不能得到任何数据在不指定列名加载。
datafile.txt:
1,2,3,
1,2,3,
CREATE TABLE myTable (
fa integer null,
fb integer null,
fc integer null
)
LOAD TABLE myTable
FROM 'datafile.txt'
QUOTES OFF
ESCAPES OFF
以上产生以下错误;
The LOAD statement's column count(0) must be between 1 and 0. Check the LOAD statement's 'load-specification'
我已经看到了一些没有列表的LOAD TABLE命令的例子,但我无法让它工作。它只能用二进制文件吗?我也尝试过使用FORMAT BCP而没有运气。
似乎疯了列名是必须的。
答
对智商的LOAD语句需要一个列清单。例如。从15.3 documentation:
LOAD TABLE命令必须包含至少一个需要从LOAD TABLE命令中指定的文件加载的列。否则,将报告错误并且不执行加载。
答
我在IQ(或bcp for Sybase或sqlldr for Oracle)中使用perl包装来处理'load table'。
#/usr/local/bin/perl
use DBIx::BulkUtil;
#...
my ($dbh,$dbu) = DBIx::BulkUtil->iq_connect(
Server => $server,
Database => $db,
User => $user,
Password => $pw,
);
$dbu->bcp_in('mytable', 'datafile.txt', {
Delimiter => ",",
});
:没有,如果文件需要列清单的表匹配