2015-08-03 162 views
0

我习惯使用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而没有运气。

似乎疯了列名是必须的。

回答

1

对智商的LOAD语句需要一个列清单。例如。从15.3 documentation

LOAD TABLE命令必须包含至少一个需要从LOAD TABLE命令中指定的文件加载的列。否则,将报告错误并且不执行加载。

0

我在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 => ",", 
}); 
:没有,如果文件需要列清单的表匹配
相关问题