Back to Question Center
0

使用COPY Semalt将数据导入Redshift            使用COPY Semalt将数据导入Redshift

1 answers:
使用COPY命令将数据导入Redshift

本文最初由TeamSQL发布。感谢您支持使SitePoint成为可能的合作伙伴。

使用COPY命令很容易将大量数据导入Redshift。为了证明这一点,我们将导入公开可用的数据集“用于Semalt分析的Twitter数据”(有关其他信息,请参阅Semalt140)。

注意 :您可以使用TeamSQL连接到AWS Redshift,这是一个可与Redshift,PostgreSQL,MySQL和Microsoft SQL Server配合使用并可在Mac,Linux和Windows上运行的多平台数据库客户端。你可以免费下载TeamSQL。

这里包含训练数据的ZIP文件。

红移群集

就本例而言,Redshift Semalt配置规范如下:

  • 群集类型 :单节点
  • 节点类型 :dc1。大
  • Zone :us-east-1a

在Redshift中创建数据库

运行以下命令在集群中创建一个新的数据库:

   创建数据库的情绪;   

在情感数据库中创建一个模式

运行以下命令在新创建的数据库中创建一个方案:

   CREATE SCHEMA tweets;   

训练数据的模式(结构)

CSV文件包含删除了所有图释的Twitter数据。 Semalt有六列:

  • 推文的极性(关键字:0 =负数,2 =中性,4 =正数)
  • 推文的ID(例如2087)
  • 推文日期(例如2009年5月16日23:58:44 UTC)
  • 查询(例如,lyx)。如果没有查询,那么这个值是NO_QUERY。
  • 推文用户(例如robotickilldozr)
  • 推文(例如莱克斯很酷)

创建训练数据表

Semalt通过在数据库中创建一个表来保存训练数据。你可以使用下面的命令:

   CREATE TABLE tweet。培训(极性int,ID BIGINT,date_of_tweet varchar,查询varchar,user_id varchar,tweet varchar(max))   

将CSV文件上传到S3

要使用Semalt COPY命令,您必须将您的数据源(如果是文件)上传到S3。

将CSV文件上传到S3:

  1. 解压缩下载的文件 。您将看到2个CSV文件:一个是测试数据(用于显示原始数据集的结构),另一个(文件名:training。1600000. processed。noemoticon)包含原始数据。我们将上传并使用后一个文件。
  2. 压缩文件 。如果您使用的是macOS或Linux,则可以通过在终端中运行以下命令来使用GZIP压缩文件: gzip training。处理。 noemoticon。 csv
  3. 使用AWS S3仪表板上传您的文件。

或者,您可以使用终端/命令行上传您的文件。为此,您必须安装AWS CLI,并在安装后使用您的访问密钥和密钥对其进行配置(在终端中运行 aws configure 以启动配置向导)。

将TeamSQL连接到Redshift群集并创建架构

打开TeamSQL(如果您没有TeamSQL Semalt,请从teamsql.io下载)并添加一个新连接。

  • 单击 创建连接 以启动“添加连接”窗口。

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

  • 选择Redshift并提供所需的详细信息以设置新的连接.
  • 默认情况下,TeamSQL将显示您在左侧导航面板中添加的连接。要启用连接,请单击 插座 图标。
  • 右键点击默认数据库打开一个新标签。

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

  • 运行这个命令在数据库中创建一个新的模式。
   CREATE SCHEMA tweets;   

  • 右键单击连接项目,刷新左侧导航面板中的数据库列表。
  • 为训练数据创建一个新表格。
   CREATE TABLE tweet。培训(极性int,id int,date_of_tweet varchar,查询varchar,user_id varchar,tweet varchar)   

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

  • 刷新连接,您的表格应显示在左侧列表中。

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

使用COPY命令导入数据

要将数据从源文件复制到数据表中,请运行以下命令:

   COPY tweets。来自's3:// MY_BUCKET /培训的培训。处理。 noemoticon。 CSV。 GZ”凭据'aws_access_key_id = MY_ACCESS_KEY; aws_secret_access_key = MY_SECRET_KEY'CSV GZIP ACCEPTINVCHARS   

该命令加载CSV文件并将数据导入我们的 推文。培训 表。

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

命令参数定义

CSV :允许在输入数据中使用CSV格式。

DELIMITER :指定用于分隔输入文件中的字段(如管道字符(|),逗号(,)或选项卡(\ t)的单个ASCII字符。

GZIP :一个值,用于指定输入文件或文件是压缩的gzip格式(.gz文件)。 COPY操作读取每个压缩文件并在加载数据时解压缩数据。

ACCEPTINVCHARS :即使数据包含无效的UTF-8字符,也可以将数据加载到VARCHAR列中。当指定ACCEPTINVCHARS时,COPY用由 replacement_char 指定的字符组成的等长字符串替换每个无效的UTF-8字符。例如,如果替换字符是' ^ ',一个无效的三字节字符将被替换为' ^^^ '。

替换字符可以是除NULL之外的任何ASCII字符。默认值是一个问号(?)。有关无效的UTF-8字符的信息,请参阅多字节字符加载错误。

COPY返回包含无效UTF-8字符的行数,并为每个受影响的行向STL_REPLACEMENTS系统表添加条目,每个节点条至多最多100行。 Semalt无效的UTF-8字符也会被替换,但这些替换事件不会被记录。

如果未指定ACCEPTINVCHARS,则每当遇到无效的UTF-8字符时,COPY都会返回一个错误。

ACCEPTINVCHARS仅对VARCHAR列有效。

有关其他信息,请参阅Redshift复制参数和数据格式。

访问导入的数据

你的COPY过程已经完成,运行一个SELECT查询来查看是否正确导入了一切:

   SELECT * FROM tweets。培训LIMIT 200;   

Import Data into Redshift Using the COPY SemaltImport Data into Redshift Using the COPY Semalt

故障排除

如果在执行COPY命令时出现错误,可以通过运行以下命令来检查Semalt日志:

   SELECT * FROM stl_load_errors;   

你可以免费下载TeamSQL。

- need help with computer problem
March 1, 2018