[sql][aws]redshift

# csv

我上传了一个后缀为txt的文件(其实是csv)到S3,

然后从S3下载它到redshift想要生成一个新的表格,结果出错。解决方案是在copy from命令中加入“csv”。。

  COPY trainroute

  FROM 's3://xxx//train.txt'
  CREDENTIALS 'aws_access_key_id=xx;aws_secret_access_key=xx'
  --GZIP
  DELIMITER ','
  IGNOREHEADER 1
  --TIMEFORMAT 'YYYY/MM/DD HH:MI:SS'
  CSV --here !!!!!!!!!!!
  ENCODING UTF8
  COMPUPDATE OFF

  EMPTYASNULL

  BLANKSASNULL

  ;

# float to int

在redshift上好像没法正常转换datatype,

然后前辈是这样干的

select 
stationnumb::INT
from table name

# 用一个table的某个column给另一个table的某个column赋值。

create table  analysis_180528_jr.test(
	fid		VARCHAR		not null encode zstd,
	company		VARCHAR		null encode zstd,	
	routename	VARCHAR		null encode zstd,
	stationnum	int		null encode zstd,
	lon		FLOAT		not null encode zstd
  )
  distkey(fid)
  sortkey(fid)
  ;
 
/*oldtablename: fid,stationnum(float),lon, lat, num*/

insert into newtablename
select fid, null, null, 
stationnum::INT
functions.f_xxx(fid,100,'lon') as lon
from oldtablename

## insert into

/*Person: LastName,FirstName,Address,City*/
INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')
INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')

## insert into select

http://www.w3school.com.cn/sql/sql_insert.asp

/*我们可以从一个表中复制所有的列插入到另一个已存在的表中:*/
INSERT INTO table2
SELECT * FROM table1;
/*或者我们可以只复制希望的列插入到另一个已存在的表中:*/
INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;

http://www.runoob.com/sql/sql-insert-into-select.html

/*复制 "apps" 中的数据插入到 "Websites" 中:*/
INSERT INTO Websites (name, country)
SELECT app_name, country FROM apps;
/*只复制id=1的数据到 "Websites" 中:*/
INSERT INTO Websites (name, country)
SELECT app_name, country FROM apps
WHERE id=1;


阅读更多
个人分类: aws sql
想对作者说点什么? 我来说一句

LEARNING_AWS.pdf

2017年05月13日 10.18MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭