2015-08-03 166 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 => ",", 
}); 
:沒有,如果文件需要列清單的表匹配
相關問題