конвертировать текстовые файлы (.txt), расположенные в облачном хранилище Google, в файлы CSV?

У меня есть набор текстовых файлов (.txt) в облачном хранилище (которые загружаются в облачное хранилище каждые 5 минут). Я хочу загрузить их в большой запрос. Но bIgquery не может принимать текстовые файлы. Поэтому мне нужно преобразовать его в приемлемый формат Bq. Как лучше всего?


person kevin    schedule 31.07.2020    source источник


Ответы (2)


Согласно этому документу BigQuery поддерживает загрузку данных только с помощью следующего файла формат: резервные копии CSV, JSON, Avro и Google Cloud Datastore.

Следовательно, если вы загрузите текстовый файл в BigQuery, BigQuery прочитает ваш текстовый файл как файл CSV, а затем действительно столкнется с ошибкой.

Вам придется вручную преобразовать текстовый файл в файл CSV, прежде чем загружать его в BigQuery.

Кроме того, вы также можете использовать Cloud Dataprep, поскольку он поддерживает текстовые файлы в качестве входных < / а>. Вы можете преобразовать текстовый файл здесь, в Dataprep, а затем экспортировать результаты в BigQuery.

Вот Обзор Dataprep и Документация по быстрому запуску, чтобы узнать, как его использовать.

person oakinlaja    schedule 31.07.2020

Вот фрагмент кода:

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)
person Soumendra Mishra    schedule 04.08.2020