缺少图像数据

missing image data

传输数据时,有时会使用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 命令传输了数据。 table 上有一个图像栏。但是当我传输它们时,图像列数据丢失了。

只转移了一小部分。

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

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

为什么?

您必须在 bcp 中使用 -T 参数设置 text/image 数据块的大小,否则它默认为 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

一个警告 - 这将 table 扫描整个 table 所以不要 运行 在大 table 的生产环境中查询。