当我传输数据时,我有时会使用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 db,我用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 :(得分:0)
您必须在bcp中使用-T参数设置文本/图像数据块的大小,否则默认为32768字节(或用于),正如您所注意到的那样,它对于列的数据来说不够大。更多信息:
您可以通过以下查询检查该列中最大行的大小,然后适当调整大小,或者我倾向于将其设置为尽可能高(即略低于2GB)以确保我获得所有内容。
select max(datalength(column_name)) from table
一句警告 - 这将表扫描整个表,因此不要在大桌子上的生产环境中运行查询。