Я переношу базу данных с Sybase на MySQL. Для этого я экспортирую таблицы в файлы .csv, а затем загружаю их в новые таблицы в MySQL. При этом значения NULL преобразуются в 0 в MySQL, поэтому мне нужно отредактировать файлы .csv, чтобы найти, где нет значений, и заменить их на NULL.
Отредактировано: я экспортирую файлы .csv из Sybase в Windows и работаю с ними на виртуальной машине Unix.
В средних столбцах могут появляться нулевые значения: 3,,,4,5 - здесь это должно выглядеть как 3,NULL, NULL,4,5 Для этого я успешно использовал:
sed -i -e 's/,,/,NULL,/g' file_name.csv
(и запустить его два раза).
Проблема в том, что значения NULL находятся в последнем столбце: 3,4,5, -- Это должно выглядеть как 3,4,5,NULL
В текстовом редакторе я успешно использовал поиск и замену: Найти: ,\r\n Заменить: ,NULL\r\n
Я хочу автоматизировать это с терминала Unix, но это не работает. Я старался:
sed -i -e 's/,\r\n/,NULL\r\n/' file_name.csv
sed -i -e 's/,\\r\\n/,NULL\\r\\n/' file_name.csv
Благодарю вас!
dos2unix
для преобразования lnebreaks только в\n
. - person Wiktor Stribiżew   schedule 24.10.2018sed -i -e 's/^,/NULL,/' -e 's/,,/,NULL,/g' -e 's/,$/,NULL/' file_name.csv
- person kenlukas   schedule 24.10.2018