У меня есть набор текстовых файлов (.txt) в облачном хранилище (которые загружаются в облачное хранилище каждые 5 минут). Я хочу загрузить их в большой запрос. Но bIgquery не может принимать текстовые файлы. Поэтому мне нужно преобразовать его в приемлемый формат Bq. Как лучше всего?
конвертировать текстовые файлы (.txt), расположенные в облачном хранилище Google, в файлы CSV?
Ответы (2)
Согласно этому документу BigQuery поддерживает загрузку данных только с помощью следующего файла формат: резервные копии CSV, JSON, Avro и Google Cloud Datastore.
Следовательно, если вы загрузите текстовый файл в BigQuery, BigQuery прочитает ваш текстовый файл как файл CSV, а затем действительно столкнется с ошибкой.
Вам придется вручную преобразовать текстовый файл в файл CSV, прежде чем загружать его в BigQuery.
Кроме того, вы также можете использовать Cloud Dataprep, поскольку он поддерживает текстовые файлы в качестве входных < / а>. Вы можете преобразовать текстовый файл здесь, в Dataprep, а затем экспортировать результаты в BigQuery.
Вот Обзор Dataprep и Документация по быстрому запуску, чтобы узнать, как его использовать.
Вот фрагмент кода:
def getBlobAsString(bucketName, blobName):
storageClient = storage.Client()
bucket = storageClient.get_bucket(bucketName)
blobFile = bucket.get_blob(blobName)
blobStr = blobFile.download_as_string()
return(blobStr)
def getBlobAsFile(bucketName, blobName, txtStr):
storageClient = storage.Client()
csvFileName = blobName.replace('txt', 'csv')
bucket = storageClient.get_bucket(bucketName)
blob = bucket.blob(csvFileName)
blob.upload_from_string(txtStr)
return(csvFileName)
txtBucket = "bucket-name"
txtBlob = "blob-name"
# Read text file content as string
txtBlobAsStr = getBlobAsString(txtBucket, txtBlob)
txtStr = str(txtBlobAsStr, 'utf-8')
# Write text file content to CSV file
csvBlob = getBlobAsFile(txtBucket, txtBlob, txtStr)