2016-12-26 2 views
0

Я использую сценарий bash для создания отчета для AdWords (файлы AdWords находятся на python). Я генерирую «CAMPAIGN_PERFORMANCE_REPORT» (как файл CSV), и одна из мер, которые я принимаю, - это «конверсии». . Моя проблема заключается в следующем - когда у меня есть более тысячи переходов, число с "на каждой стороне и запятой Пример:Удалить круглые скобки из файла CSV в сценарии Bash

2016-12-25,Campaign_A,Universal App Campaign,264.0 
2016-12-25,Campaign_B,Universal App Campaign,"1,535.0" 
2016-12-25,Campaign_C,Universal App Campaign,"1,472.0" 
2016-12-25,Campaign_D,Universal App Campaign,"1,378.0" 
2016-12-25,Campaign_E,Universal App Campaign,382.0 
2016-12-25,Campaign_F,Universal App Campaign,431.0 

Когда я вставить эти данные в MySQL ячейка разделена на 2 и Я получаю «1» в преобразованиях вместо 1535 (например)

Так мне нужна ваша помощь в одном из этих двух вопросов:.

  1. кто-нибудь знает, как я могу принять «преобразование» поле как Long, а не как Double от API AdWords?
  2. Если нет, как заменить скобки (") и запятые (,) в нескольких файлах в одной папке в Linux? Поскольку у меня есть файл csv для каждой учетной записи AdWords ...

Спасибо!

+2

Вставьте свой ожидаемый результат для данных образца. – Inian

+0

Возможно, вам стоит подумать об изменении метода, который вы используете для загрузки данных в mysql, а не для изменения файла. – symcbean

ответ

1

Это слишком длинный комментарий.

Если вы загружаете данные в MySQL, тогда вы должны использовать load data infile.

Эта команда имеет опцию: fields optionally enclosed by, где вы можете указать символ двойной кавычки. Это будет обрабатывать запятые между символом разделителя как частью значения, а не разделителем значений.

Вы можете ознакомиться с документацией here.

+0

Большое спасибо, но это не сработает ... мое поле SQL - INT, и когда я добавляю «ENCLOSED BY», «SQL», см. Это поле как строку (1,535) и значение, которое попадает в таблица 1 ... – Bramat

+1

@Bramat ... Я бы импортировал ее как строку и выполнял манипуляции в SQL. Вы также можете использовать переменные и преобразования в 'load data infile'. –

+0

В таблице tmp исправлены все мои проблемы ... Большое спасибо :) – Bramat

0

Вы можете запустить файл через SED фильтр, как это:

sed -r ':l s/"([0-9]+),/"\1/g; t l; s/"([0-9.]+)"$/\1/g' yourfile > convertedfile 

Он использует два шага подход, чтобы избавиться от запятые и кавычки:

  1. до тех пор, пока существует цитата после чего следует номер ([0-9.]+), за которым следует ,, запятая удаляется: :l s/"([0-9]+),/"\1/g; t l; (это метка, удалите запятую, если что-то было удалено с помощью метки goto) -
  2. удалить цитаты вокруг номеров ([0-9.]+) в конце строки ($)
Смежные вопросы