postgresql导入csv数据乱码以及时间精度保留处理问题

本文介绍了Linux系统中导出文件到Windows时可能出现的乱码问题及其解决方案。针对编码不匹配导致的乱码,可以使用iconv命令进行编码转换,例如从UTF-8转为GBK。另外,对于CSV和Excel文件,由于Windows默认格式可能导致时间精度丢失,可以使用Notepad++的UCS-2 Little Endian编码保存,或者在Linux下直接将制表符替换为逗号转为CSV,再导入数据库以保持精度。此外,文章还提到了Excel乱码的处理方法链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux导出到window的乱码处理方法

##查看系统使用的编码
locale

##查看当前系统支持的所有语言类型
locale -a

##查看当前系统所使用的语言类型
echo $LANG

##临时通过变量进行修改
LANG=“zh_CN.UTF-8”

##centos系统中永久修改,不同系统的语言配置文件存放文件可能不一样,可以查看/etc/profile.d/lang.sh文件信息
/etc/locale.conf

iconv命令的使用

用法:iconv [option…] [file…]

常用参数

参数描述
-f/--from-code=name原始文件的编码
-t/--to-code=name输入文件的编码
-l/--list列出所有编码字符集
-c从输出中省略缺省字符
-o/--outfile=file输出文件
-s/--silenta安静输出
--verbose打印输出进程信息
-?/--help帮助信息
-V/--version版本信息

问题:

##主要是选择导出编码选择不合适导致的
iconv: illegal input sequence at position 35567

Linux到window中文乱码的处理

方法1.使用iconv进行编码转换

iconv -f utf8 -t gb18030 table_information.txt > tmp.txt

方法2.使用Notepad++中的编码进行转换

打开table_information.txt ----> 编码 ----> 使用UCS-2 Little Endian编码 —> 重新保存

window系统下打开CSV和Excel格式自动丢失时间精度的问题

1.创建一个.csv文件

2.通过导入文件数据

3.某的日期数据列通过文本格式导入后
2017-06-08 08:18:06.000395

4.另存为csv格式文件后,重新打开csv文件发现格式发生变化,精度也丢失了
##csv的时间格式打开默认是window系统的格式

2017/6/8 8:18:06

5.时间毫秒精度可以通过自定义的格式进行
yyyy-mm-dd hh:mm:ss.000

6.时间微妙精度

在linux下直接通过将\t替换成逗号后,转成csv文件即可,然后可以导入postgresql,从而不会引起数据精度丢失的问题

cat table_information.txt |tr “\t” “,”>aa.csv
\COPY table_information from ‘/tmp/aa.csv’ csv header DELIMITER ‘,’;

ps:不要局限于一种思维方式下,总是想着如何在window下打开csv保存如何精度不丢失。但是,实际问题解决中,并一定需要window下操作。

Excel乱码处理:https://blog.csdn.net/try2find/article/details/104862581

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值