Я использую Python для создания файла CSV и загрузки его в BigQuery
. Тем не менее, он не может загрузить со следующей ошибкой:
Ошибка при чтении данных, сообщение об ошибке: столбец ссылок таблицы CSV
позиция 4, но строка начинается с позиции: 4137 содержит только 2
столбцы.
Конфигурация, которую я использую, выглядит следующим образом:
job_config = bigquery.LoadJobConfig()
job_config.source_format = bigquery.SourceFormat.CSV
job_config.ignore_unknown_values = False
job_config.autodetect = False
job_config.field_delimiter = '|'
job_config.write_disposition = bigquery.WriteDisposition.WRITE_TRUNCATE
job_config.max_bad_records = 0
job_config.skip_leading_rows = 0
Пример записи выглядит так:
2c | Блэкхок сошел с ума | Это почти правильно | Good Times & Great Country; 2019-01-16 14: 22: 07
CSV имеет всего 114 записей. Когда я установил job_config.allow_quoted_newlines = True. Он загружает только 60 строк или число строк меньше 114.
Создание файла CSV следующим образом:
f.write((str(callsign).split('_')[0]).lower().encode('utf-8') + '|' + artist.encode('utf-8') + '|' + song_title.encode('utf-8') + '|' + show_title.encode('utf-8') + '|' + str(time_bq).encode('utf-8') + '\n')
def bq_load():
credential_path = "Key.json"
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = credential_path
bigquery_client = bigquery.Client()
dataset_ref = bigquery_client.dataset('POC')
table_ref = dataset_ref.table('data_poc')
job_config = bigquery.LoadJobConfig()
job_config.source_format = bigquery.SourceFormat.CSV
job_config.ignore_unknown_values = False
job_config.autodetect = False
job_config.field_delimiter = '|'
job_config.allow_quoted_newlines = True
job_config.allow_jagged_rows = True
job_config.write_disposition = bigquery.WriteDisposition.WRITE_TRUNCATE
job_config.max_bad_records = 0
job_config.skip_leading_rows = 0
with open('current_song.csv', 'rb') as source_file:
job = bigquery_client.load_table_from_file(
source_file,
table_ref,
location='US', # Must match the destination dataset location.
job_config=job_config) # API request
try:
print job.job_id
job.result() # Waits for table load to complete.
return 'Success'
except Exception as ex:
logger.error(
"The following exception occurred in the table load of job - {} {} ".format(ex, format(job.job_id)))
return 'Failure'
Нужно загрузить полное содержимое CSV в bigquery. Любая помощь в определении причины этой ошибки будет очень полезна