我想从一个 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
我想从一个 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
PostgreSQL 的COPY
命令及其psql
\copy
包装器不理解或不支持 Microsoft Office Excel ( xls
) 或 Microsoft Office XML 电子表格 ( xlsx
) 文件格式。
您必须将 Excel 文件另存为 CSV 并使用\copy ... CSV
,或者使用能够理解 Microsoft Excel 格式的 ETL 工具。保存为 CSV 将是迄今为止最简单的方法。
Excel 工作表中的数据必须与您要copy
进入的表的 PostgreSQL 列定义兼容。例如,您不能将值复制ABC123
到integer
列中。
如果您的 Excel 数据杂乱无章,充满了无效值,或者存在其他问题,请考虑先在 Excel 中通过添加验证对其进行清理。TEMPORARY
或者,您可以将其导入到UNLOGGED
问题列全部使用text
数据类型定义的 PostgreSQL 表中,然后使用INSERT INTO ... SELECT
命令将清理后的数据插入最终表中。最后一个选择是再次使用 ETL 工具(如上述工具之一)在加载和插入数据时清理数据。
您选择哪种方法取决于您更喜欢使用 SQL 查询、ETL 工具还是 Excel。