0

我想从一个 excel 文件填充我的客户数据库,我正在使用 \copy 命令,但我收到以下错误。谁能帮我解决这个问题?

\copy customer from '/home/2008/uehtes/Desktop/Comp421/data.xlsx';
ERROR:  invalid byte sequence for encoding "UTF8": 0xde76
CONTEXT:  COPY customer, line 1
4

1 回答 1

4

PostgreSQL 的COPY命令及其psql \copy包装器不理解或不支持 Microsoft Office Excel ( xls) 或 Microsoft Office XML 电子表格 ( xlsx) 文件格式。

您必须将 Excel 文件另存为 CSV 并使用\copy ... CSV,或者使用能够理解 Microsoft Excel 格式的 ETL 工具。保存为 CSV 将是迄今为止最简单的方法。

Excel 工作表中的数据必须与您要copy进入的表的 PostgreSQL 列定义兼容。例如,您不能将值复制ABC123integer列中。

如果您的 Excel 数据杂乱无章,充满了无效值,或者存在其他问题,请考虑先在 Excel 中通过添加验证对其进行清理。TEMPORARY或者,您可以将其导入到UNLOGGED问题列全部使用text数据类型定义的 PostgreSQL 表中,然后使用INSERT INTO ... SELECT命令将清理后的数据插入最终表中。最后一个选择是再次使用 ETL 工具(如上述工具之一)在加载和插入数据时清理数据。

您选择哪种方法取决于您更喜欢使用 SQL 查询、ETL 工具还是 Excel。

于 2013-02-17T23:07:08.260 回答