Beispiele für die Verwendung von Amazon S3 Select für ein Objekt - Amazon Simple Storage Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Beispiele für die Verwendung von Amazon S3 Select für ein Objekt

Wichtig

Amazon S3 Select ist für Neukunden nicht mehr verfügbar. Bestandskunden von Amazon S3 Select können die Funktion weiterhin wie gewohnt nutzen. Weitere Informationen

Sie können S3 Select verwenden, um Inhalte aus einem Objekt auszuwählen, indem Sie die Amazon S3 S3-Konsole, die RESTAPI, und die verwenden AWS SDKs.

Weitere Informationen zu den unterstützten SQL Funktionen für S3 Select finden Sie unterSQLFunktionen.

Inhalte aus einem Objekt in der Amazon S3-Konsole auswählen
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie im linken Navigationsbereich Buckets aus.

  3. Wählen Sie den Bucket aus, der das Objekt enthält, aus dem Sie Inhalte auswählen möchten, und wählen Sie dann den Namen des Objekts aus.

  4. Wählen Sie Objektaktionen und anschließend Abfragen mit S3 Select aus.

  5. Konfigurieren Sie die Eingabeeinstellungen basierend auf dem Format Ihrer Eingabedaten.

  6. Konfigurieren Sie die Ausgabeeinstellungen basierend auf dem Format der Ausgabe, die Sie empfangen möchten.

  7. Um Datensätze aus dem ausgewählten Objekt zu extrahieren, geben Sie unter SQLAbfrage den SELECT SQL Befehle. Weitere Informationen zum Schreiben von SQL Befehlen finden Sie unterSQLReferenz für Amazon S3 Select.

  8. Nachdem Sie SQL Abfragen eingegeben haben, wählen Sie SQLAbfrage ausführen. Anschließend können Sie unter Abfrageergebnisse die Ergebnisse Ihrer SQL Abfragen sehen.

Sie können den verwenden AWS SDKs, um Inhalt aus einem Objekt auszuwählen. Wenn Ihre Anwendung dies jedoch erfordert, können Sie REST Anfragen direkt senden. Weitere Informationen zum Anfrage- und Antwortformat finden Sie unter SelectObjectContent.

Sie können Amazon S3 Select verwenden, um mithilfe der selectObjectContent Methode einen Teil des Inhalts eines Objekts auszuwählen. Wenn diese Methode erfolgreich ist, gibt sie die Ergebnisse des SQL Ausdrucks zurück.

Java

Der folgende Java-Code gibt den Wert der ersten Spalte für jeden Datensatz zurück, der in einem Objekt gespeichert ist, das Daten enthält, die im CSV Format gespeichert sind. Im Beispiel müssen auch Progress- und Stats-Meldungen zurückgegeben werden. Sie müssen einen gültigen Bucket-Namen und ein Objekt angeben, das Daten im CSV Format enthält.

Anweisungen zum Erstellen und Testen eines Arbeitsbeispiels finden Sie unter Erste Schritte im AWS SDK for Java Entwicklerhandbuch.

package com.amazonaws; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.CSVInput; import com.amazonaws.services.s3.model.CSVOutput; import com.amazonaws.services.s3.model.CompressionType; import com.amazonaws.services.s3.model.ExpressionType; import com.amazonaws.services.s3.model.InputSerialization; import com.amazonaws.services.s3.model.OutputSerialization; import com.amazonaws.services.s3.model.SelectObjectContentEvent; import com.amazonaws.services.s3.model.SelectObjectContentEventVisitor; import com.amazonaws.services.s3.model.SelectObjectContentRequest; import com.amazonaws.services.s3.model.SelectObjectContentResult; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.concurrent.atomic.AtomicBoolean; import static com.amazonaws.util.IOUtils.copy; /** * This example shows how to query data from S3Select and consume the response in the form of an * InputStream of records and write it to a file. */ public class RecordInputStreamExample { private static final String BUCKET_NAME = "${my-s3-bucket}"; private static final String CSV_OBJECT_KEY = "${my-csv-object-key}"; private static final String S3_SELECT_RESULTS_PATH = "${my-s3-select-results-path}"; private static final String QUERY = "select s._1 from S3Object s"; public static void main(String[] args) throws Exception { final AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient(); SelectObjectContentRequest request = generateBaseCSVRequest(BUCKET_NAME, CSV_OBJECT_KEY, QUERY); final AtomicBoolean isResultComplete = new AtomicBoolean(false); try (OutputStream fileOutputStream = new FileOutputStream(new File (S3_SELECT_RESULTS_PATH)); SelectObjectContentResult result = s3Client.selectObjectContent(request)) { InputStream resultInputStream = result.getPayload().getRecordsInputStream( new SelectObjectContentEventVisitor() { @Override public void visit(SelectObjectContentEvent.StatsEvent event) { System.out.println( "Received Stats, Bytes Scanned: " + event.getDetails().getBytesScanned() + " Bytes Processed: " + event.getDetails().getBytesProcessed()); } /* * An End Event informs that the request has finished successfully. */ @Override public void visit(SelectObjectContentEvent.EndEvent event) { isResultComplete.set(true); System.out.println("Received End Event. Result is complete."); } } ); copy(resultInputStream, fileOutputStream); } /* * The End Event indicates all matching records have been transmitted. * If the End Event is not received, the results may be incomplete. */ if (!isResultComplete.get()) { throw new Exception("S3 Select request was incomplete as End Event was not received."); } } private static SelectObjectContentRequest generateBaseCSVRequest(String bucket, String key, String query) { SelectObjectContentRequest request = new SelectObjectContentRequest(); request.setBucketName(bucket); request.setKey(key); request.setExpression(query); request.setExpressionType(ExpressionType.SQL); InputSerialization inputSerialization = new InputSerialization(); inputSerialization.setCsv(new CSVInput()); inputSerialization.setCompressionType(CompressionType.NONE); request.setInputSerialization(inputSerialization); OutputSerialization outputSerialization = new OutputSerialization(); outputSerialization.setCsv(new CSVOutput()); request.setOutputSerialization(outputSerialization); return request; } }
JavaScript

Ein JavaScript Beispiel, bei dem der SelectObjectContent API Vorgang AWS SDK for JavaScript with the S3 verwendet wird, um Datensätze JSON und CSV Dateien auszuwählen, die in Amazon S3 gespeichert sind, finden Sie im Blogbeitrag Einführung in die Unterstützung von Amazon S3 Select in der AWS SDK for JavaScript.

Python

Ein Python-Beispiel für die Verwendung von SQL Abfragen zum Durchsuchen von Daten, die mithilfe von S3 Select als Datei mit kommagetrennten Werten (CSV) in Amazon S3 geladen wurden, finden Sie im Blogbeitrag Abfragen von Daten ohne Server oder Datenbanken mit Amazon S3 Select.