2017-10-10 314 views
0

当我传输数据时,我有时使用bcp命令。 像这样:缺少图像数据

---Out 
bcp dbname..tableName out tableName.bcp -Uuser -SSERVERNAME -n -Jiso88599 


---IN 
bcp dbname..tableName in tableName.bcp -Uuser -SSERVERNAME -n -Jiso88599 

我有一个的Sybase ASE数据库,我已经转移与BCP命令的数据。 桌子上有一个图像列。但是当我将它们转移到图像列数据丢失时。

只有一小部分已被转移。

--- Prod 
SELECT datalength(image_column) FROM dbo.tableName where id='5eb9f' --> 57375 

--- TEST 
SELECT datalength(image_column) FROM dbo.tableName where id='5eb9f' --> 32768 

为什么?

回答

0

您必须在bcp中用-T参数设置文本/图像数据块的大小,否则它将默认为32768字节(或用于),您已经注意到,其大小不足以满足列的数据。更多信息在:

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc30191.1550/html/utility/X14951.htm

您可以通过下面的查询该列中检查最大行的大小,则大小适当,或者我倾向于只设置尽可能高(即只2GB下)确保我得到一切。警告

select max(datalength(column_name)) from table 

一个字 - 这将表扫描整个表,所以不要在一个大表上运行在生产环境中的查询。