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

 夏天电艹热毯 发布于 2023-01-07 14:35

目前,我们有一个脚本可以解析数据并一次将一条记录上传到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

Dan Ciborows.. 6

你真的要做的就是在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 - 使用雾在现有s3文件的末尾附加内容

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

这里加载到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)

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

1 个回答
  • 你真的要做的就是在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 - 使用雾在现有s3文件的末尾附加内容

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

    这里加载到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)
    

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

    2023-01-07 14:37 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有