加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何使用ruby将单个记录写入Redshift数据库?

发布时间:2020-12-17 03:07:05 所属栏目:百科 来源:网络整理
导读:目前,我们有一个脚本可以解析数据并一次将一条记录上传到 mysql数据库.最近,我们决定改用aws redshift. 有没有办法可以使用我的亚马逊登录凭据和我的红移群集信息将这些记录直接上传到redshift数据库? 我在网上找到的所有指南建议从S3存储桶导入文本或csv文
目前,我们有一个脚本可以解析数据并一次将一条记录上传到 mysql数据库.最近,我们决定改用aws redshift.

有没有办法可以使用我的亚马逊登录凭据和我的红移群集信息将这些记录直接上传到redshift数据库?

我在网上找到的所有指南建议从S3存储桶导入文本或csv文件,但这对我的用例来说不太实用.

谢谢你的帮助

我想做这样的事情:

require 'aws-sdk'
require 'pg'

AWS.config(access_key_id: 'my_access_key_id',secret_access_key: 'my_secret_access_key',region: 'us-west-2')

redshift = AWS::Redshift.new

credentials = {
    driver: "org.postresql.Driver"
    url: "my_connect_url"
    username: "my_username"
    password: "my_password"
    database: "my_db"
}

db = redshift.connect(credentials) # **NOT A REAL LINE OF CODE,I WISH IT WAS**

sql_query = "INSERT INTO my_table (my_column) 
        VALUES ('hello world'); " 

db.query(sql_query)
db.close

解决方法

你真的要做的就是在S3中一次插入一条记录.然后定期加载该文件. Redshift在加载100,000行文件时效率更高,然后逐个输入100行数据(粗略估计我的经验……).如果你真的想按记录插入东西,你可以使用任何标准的PSQL连接器为ruby.可以使用jdbc / odbc psql驱动程序连接Redshift.有点像你写的示例程序.

我不建议这样做……但这里是插入的文档
http://docs.aws.amazon.com/redshift/latest/dg/r_INSERT_30.html

我会查看关于附加到s3文件的这个问题.这真的是你想做的……

Ruby – Append content at the end of the existing s3 file using fog

编辑
所以我在没有阅读答案的情况下跳过这个问题….
所以更正,你需要在本地创建文件,一旦达到一定的大小,将其上传到s3,然后redshift load命令.

这里加载到redshift
http://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-S3.html

或者….你可以尝试从远程主机加载数据…我以前从未这样做过,但它基本上跳过s3加载部分,但你仍然想要一个大文件移动.
http://docs.aws.amazon.com/redshift/latest/dg/loading-data-from-remote-hosts.html

最后,如果你真的想要通过记录插入记录,你可能应该使用RDS而不是Redshift,除非数据集很大,否则你将获得更好的性能.

好的,这是我对ruby的尝试,但说实话我以前从未做过RUBY,但实际上它只是与PSQL数据库的连接.您正尝试通过AWS SDK连接到redshift,用于启动,调整大小和管理.应该通过JDBC / ODBC驱动程序sqlworkbench,psql linux cli等连接到redshift.

require 'pg'
host = 'redshift-xxxx.aws.com'
port = 5439
options = ''
tty = ''
dbname = 'myDB'
login = 'master'
password = 'M@st3rP@ssw0rd'
conn = PGconn.new(host,port,options,tty,dbname,login,password)

其中主机,端口,登录名和密码都在redshift午餐期间设置. DBname是一个psql的东西,你对psql了解多少?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读