我想从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
答案 0 :(得分:4)
PostgreSQL的COPY
命令和psql
\copy
包装器不能理解或支持Microsoft Office Excel(xls
)或Microsoft Office XML电子表格({{1文件格式。
您必须将Excel文件另存为CSV并使用xlsx
,或使用了解Microsoft Excel格式的ETL工具。到目前为止,保存为CSV将是最简单的方法。
Excel表格中的数据必须与您\copy ... CSV
所使用的表格的PostgreSQL列定义兼容。例如,您无法将copy
等值复制到ABC123
列中。
如果您的Excel数据混乱,充满无效值,并且有问题,请考虑首先通过添加验证在Excel中清除它。或者,您可以将其导入integer
或TEMPORARY
PostgreSQL表,其中问题列全部使用UNLOGGED
数据类型定义,然后使用text
命令插入已清除将数据输入决赛桌。最后一个选择是再次使用上述之一的ETL工具在加载和插入数据时清理数据。
您选择哪种方法取决于您是否更习惯使用SQL查询,使用ETL工具或使用Excel。