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

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

猜你喜欢

转载自blog.csdn.net/weixin_44375561/article/details/121764786