Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Esempi di utilizzo di Amazon S3 Select su un oggetto
Amazon S3 Select non è più disponibile per i nuovi clienti. I clienti esistenti di Amazon S3 Select possono continuare a utilizzare la funzionalità come di consueto. Ulteriori informazioni
Puoi usare S3 Select per selezionare il contenuto da un oggetto utilizzando la console Amazon S3, l'API REST e il. AWS SDKs
Per ulteriori informazioni sulle funzioni SQL supportate per S3 Select, consulta Funzioni SQL.
Per selezionare il contenuto da un oggetto nella console Amazon S3
-
Accedi a AWS Management Console e apri la console Amazon S3 all'indirizzo. https://console.aws.amazon.com/s3/
-
Nel pannello di navigazione a sinistra, scegli Buckets (Bucket).
-
Scegli il bucket che contiene l'oggetto da cui desideri selezionare il contenuto, quindi scegli il nome dell'oggetto.
-
Scegli Azioni oggetto e Interroga con S3 Select.
-
Configura impostazioni di input, in base al formato dei dati di input.
-
Configura impostazioni di output, in base al formato dell'output che desideri ricevere.
-
Per estrarre i record dall'oggetto scelto, in query SQL, inserisci i comandi SELECT SQL. Per ulteriori informazioni su come scrivere comandi SQL, consulta Documentazione di riferimento su SQL per Amazon S3 Select.
-
Dopo aver inserito le query SQL, scegli Esegui query SQL. Quindi, in Risultati della query, puoi visualizzare i risultati delle tue query SQL.
Puoi usare il AWS SDKs per selezionare il contenuto da un oggetto. Tuttavia, se l'applicazione lo richiede, è possibile inviare richieste REST direttamente. Per ulteriori informazioni sul formato della richiesta e della risposta, consulta SelectObjectContent.
È possibile utilizzare Amazon S3 Select per selezionare alcuni dei contenuti di un oggetto utilizzando il metodo selectObjectContent
. Se questo metodo ha esito positivo, restituisce i risultati dell'espressione SQL.
- Java
-
Il codice Java seguente restituisce il valore della prima colonna per ogni record archiviato in un oggetto contenente dati archiviati in formato CSV. Richiede anche che vengano restituiti messaggi Progress
e Stats
. Fornire un nome bucket e un oggetto validi contenenti dati in formato CSV.
Per istruzioni su come creare e testare un esempio funzionante, consulta la Guida introduttiva per gli AWS SDK per Java sviluppatori.
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
-
Per un JavaScript esempio che utilizza l'operazione AWS SDK per JavaScript con l'SelectObjectContent
API S3 per selezionare i record dai file JSON e CSV archiviati in Amazon S3, consulta il post sul blog Introduzione al supporto per Amazon S3 Select nel. AWS SDK per JavaScript
- Python
-
Per un esempio Python sull'utilizzo delle query SQL per cercare i dati caricati su Amazon S3 come file CSV (Comma-Separated Value) utilizzando S3 Select, vedere il post del blog Interrogazione di dati senza server o database tramite Amazon S3 Select.