Заменить символ в большом текстовом файле - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть серия .txt файлов, которые мне нужно загрузить в Google Cloud, чтобы создать из них несколько таблиц в BigQuery.Файлы представляют собой таблицы, разделителем которых является ';'.

. По какой-то причине кажется, что у BigQuery возникают проблемы при идентификации столбцов (автоматически или нет), когда файлы находятся в этой форме, даже если указано ";"в качестве разделителя.

Я создал образец таблицы и нашел и заменил ';'с некоторыми ',' и сохранил файл как .csv.Теперь у BigQuery нет проблем при создании таблицы apt.

Вопрос: Должен ли я найти и заменить все разделители во всех таблицах?или я что-то упустил?

Если да, как я могу внедрить в OS 10 команду sep prompt?(файлы имеют большой размер, и у меня возникают проблемы при своевременной замене символа также с UltraEdit)

Best!

1 Ответ

0 голосов
/ 19 ноября 2018

Чтобы решить эту проблему - вы можете загрузить такой файл (ы) как один столбец, а затем, после того как у вас есть данные в BigQuery, - проанализировать их с помощью SQL в любой схеме, которая вам нужна. Я думаю, что это самый общий и простой способ справиться с этим. Обычно SPLIT(col, ';') будет использоваться как в приведенном ниже довольно упрощенном примере или в более сложных случаях REGEXP_EXTRACT_ALL()

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'aa,a;bbb;ccc' col
)
SELECT 
  SPLIT(col, ';')[SAFE_OFFSET(0)] col1, 
  SPLIT(col, ';')[SAFE_OFFSET(1)] col2, 
  SPLIT(col, ';')[SAFE_OFFSET(2)] col3
FROM `project.dataset.table`   

с результатом

Row col1    col2    col3     
1   aa,a    bbb     ccc  
...