数据转移常用csv平文件,一般加载进数据库需要先创建表,然后加载csv到对应的表里。能不能在表不存在的情况下,加载csv到数据库,自动创建表呢?这对于快速分析很有用。
We can use tools like pgfutter to import flat delimiter files into postgres. It will create the table automatically ( all column type is text) or append data to existing table.
Refer to https://github.com/lukasmartinelli/pgfutter/
加载csv到postgrsql数据库,如果表存在,追加;如果表不存在,自动创建与文件名同名的表,字段默认都是text类型的。
./pgfutter_linux_amd64 –host “hostname” –port “5432” –db “dbname” –schema “schemaNam” –user “username” –pw “password” csv All-Rewards.csv
在数据库上,可以做数据类型的转换。可以直接编写查询sql,或者更改字段属性。
su – postgres
psql -h hostname -d dbname -U username -c “alter table schemaName.All_Rewards alter column REWARD_CONCURRENCE type integer using (trim(REWARD_CONCURRENCE)::integer);”
\q
或者在SQL Client上改:
alter table sao_paulo_20171011 alter column id type integer using (trim(id)::integer);
alter table sao_paulo_20171011 alter column price type integer using (trim(price)::numeric(10));
alter table sao_paulo_20171011 alter column update_time type timestamp using (trim(case when update_time =” then null else update_time end)::timestamp);
postgresql 数据格式参考:
http://www.postgres.cn/docs/9.5/datatype.html
https://www.postgresql.org/docs/9.5/static/datatype.html
Linux版本下载:
https://github.com/lukasmartinelli/pgfutter/releases/download/v1.1/pgfutter_linux_amd64