Команда sed для удаления недопустимых символов при импорте файла CSV в базу данных Sqlite3 - PullRequest
1 голос
/ 11 июля 2019

У меня есть CSV-файл, содержащий более 100 КБ записей (размер файла 50 МБ).Когда я импортирую данные из CSV в базу данных Sqlite3, появляется сообщение об ошибке «ожидается 43 столбца данных, но найдено 78».

Причина, по которой я обнаружил, заключалась в том, что файл CSV содержит недопустимые символы.(См. Снимок экрана)

Пожалуйста, помогите мне удалить недопустимые символы из файла CSV с помощью «Linux Sed Command»

https://prnt.sc/odr7hb

Мне нужно изменить эту команду с помощью команды sedудалить недопустимые символы.

sqlite3 /path_to_db/date_sqlite.db 
"<<EOS" 
.separator '|' 
.import /path_to_data_file/data_log_filr tbl_sqlite_data EOS

Null Byte = Это символы, которые нужно удалить

Ответы [ 2 ]

0 голосов
/ 14 июля 2019

Чтобы удалить нулевой байт в текстовом файле

sed 's/\x0//g' PATH TO INPUT FILE > PATH TO OUTPUT FILE

Для использования в PHP Exec

 $regx = 's/\x0//g';  

 $command = sprintf(" sed '%s' $pathToInput > $pathToOutput   ", $regx );

 exec($command)

Надеюсь, это поможет.

0 голосов
/ 12 июля 2019

Предполагая, что ваш входной файл не Unicode, и поэтому вы действительно хотите удалить все байты NUL, вы можете сделать это на оболочке с

tr -d \\000 <input.csv >output.csv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...