我要将CSV文件导入9.2版,但CSV文件在最终列位置中具有双引号双引号以表示NULL值:
“2”,“1001”,“9”,“2”,“0”,“0”,“130”,“”,“2012-10-22 09:33:07.073000000” “”
,它映射到类型为Timestamp的列。 postgreSQL不喜欢“”。我试图设置NULL选项,但也许我不是做正确吗?我尝试了 NULL as'“和 NULL''和 NULL as' 和 NULL“”但未成功;这是我的命令:
COPY SCH.DEPTS
FROM'H:/backups/DEPTS.csv'
WITH(
FORMAT CSV,
DELIMITER',',
NULL'',
HEADER TRUE,
QUOTE'“'
)
,但失败并显示错误:
错误:类型为timestamp的输入语法无效:
CONTEXT:COPY depts,line 2,column expirydate:“”
PS有一种方法可以指定布尔值到COPY命令的字符串表示形式?生成CSV(其中有很多)的实用程序使用“false “和”true“。
空字符串(”“)不是有效的时间戳, COPY 似乎不提供 FORCE NULL 或 FORCE EMPTY TO NULL 模式;它有相反的, FORCE NOT NULL ,但这不会做你想要的。
可能需要将 COPY 数据导入具有文本字段的表格,可能是 UNLOGGED 或 TEMPORARY 表,然后使用 INSERT INTO real_table SELECT col1,col,col3,NULLIF(tscol, ')FROM temp_table; 。
COPY true 和 false 作为布尔值,因此您不应该有任何问题。
或者,使用简单的Python脚本和 csv 模块读取CSV,然后使用 psycopg2 到 COPY 行插入Pg。或者只需写入新的清理过的CSV并将其送入 COPY 。或使用执行数据变换(如Pentaho Kettle或Talend)的ETL工具。
来源:
http://www.it1352.com/550074.html
% python setup.py install
%
csv
2psql --schema=public --key=student_id,class_id example/enrolled.
csv
> enrolled.sql
% psql -f enrolled.sql
将
CSV
文件转换为
PostgreSQL
表。
Usage:
csv
2psql [options] ( input.
csv
| - ) [tablename] | psql
options include:
--schema=name use name as schema, and strip table name if needed
--role=name use name as role for database transaction
--key=a:b:c create
db-utf8-转码器
一个AC程序,用于将
PostgreSQL
字符串
数据转码为UTF8。
该项目针对在Ubuntu 10.0.4 LTS上运行的
PostgreSQL
9.0。 欢迎移植到其他
PostgreSQL
版本和OS!
转码器一次只能对一张表运行。 它执行以下操作:
从命令行获取要转换的架构和表,以及其他选项(仅报告,强制转换,打印调试消息,帮助)。
打开与数据库的读写连接。
动态确定表的最短(按
列
计)唯一索引。
动态确定表的基于字符的
列
。
从唯一索引中获取最小值。
获取该最小值的行。
对于行中每个基于字符的
列
: 检测编码(如果可以); b。 将值从检测到的编码转换为UTF8。 如果无法确定特定
字符串
的编码,则返回原始字节流。
将已转换和/或未转换的数据写回到同一行。
确认更新后记录转换。
清理内存和数据库连接,然后退出。
请注意,步骤6、7和8不是事务性的
运行MySQL和
PostgreSQL
查询,并将结果存储在
CSV
中。
为什么要使用sql2
csv
sql2
csv
是一个小型实用程序,用于运行MySQL和
PostgreSQL
查询并将输出存储在
CSV
文件中。
在某些环境中,例如在AWS RDS中使用MySQL或Aurora时,本机工具无法将查询结果导出到
CSV
。 sql2
csv
是提供此功能的简单模块。
pip3 install sql2
csv
# Basic usage
mysql [...] -e " SELECT * FROM table " | sql2
csv
psql [...] -c " SELECT * FROM table " | sql2
csv
从标准输入
对于简单的查询,您可以将结果直接从mysql或psql通过sql2
csv
到sql2
csv
。
对于更复杂的查询,建议使用CLI(
var pgarray = require('pg-array');
pgarray('node; ruby; rust', ';');
//=> '{node,ruby,rust}'
var pgarray = require('pg-array');
pgarray(['node', 'ruby', 'rust']);
//=> '{node,ruby,rust}'
PostgreSQL
读写外部数据文本文件(oss_fdw)阿里云 > 云数据库 RDS> RDS
PostgreSQL
数据库> 插件> 异构数据库访问
前提条件oss_fdw用例oss_fdw参数CREATE SERVER参数CREATE FOREIGN TABLE参数CREATE FOREIGN TABLE的导出模式参数辅助函数辅助功能oss_fdw注意事项ID和Key隐藏
阿里云支持通过oss_fdw插件将OSS中的数据加载到
PostgreSQL
和PPAS数据库中,也支持
COPY 命令可以快速的导入数据到
PostgreSQL
中,文件格式类似CVS之类。适合批量导入数据,比 \i 和恢复数据表快。
导出表数据到文件或 STDOUT :
COPY tablename [(column [, ...])]
TO {'filename' | STDOUT}
[[WITH]
[BINARY]
[OIDS]
在需求的不断迭代中,表字段也会增加,有时候在大表增加的字段中,存在包含not null和default字段,这时候添加表字段就执行相当慢,因为
PostgreSQL
把表数据全部重写,参考:https://my.oschina.net/Kenyon/blog/99757;