有没有办法可以使用我的亚马逊登录凭据和我的红移群集信息将这些记录直接上传到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.newcredentials = { 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 = 5439options = ''tty = ''dbname = 'myDB'login = 'master'password = 'M@st3rP@ssw0rd'conn = PGconn.new(host,port,options,tty,dbname,login,password)
其中主机,端口,登录名和密码都在redshift午餐期间设置. DBname是一个psql的东西,你对psql了解多少?
总结以上是内存溢出为你收集整理的如何使用ruby将单个记录写入Redshift数据库?全部内容,希望文章能够帮你解决如何使用ruby将单个记录写入Redshift数据库?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)