sed命令在将CSV文件导入Sqlite3数据库时删除无效字符

时间:2019-07-11 18:41:55

标签: php sqlite shell import-from-csv

我有一个CSV文件,该文件具有超过10万条记录(文件大小为50mb)。 当我将数据从CSV导入Sqlite3数据库时,出现错误,提示“预期有43列数据,但找到了78个”。

我发现的原因是,CSV文件包含一些无效字符。 (请参阅屏幕截图)

请帮助我使用“ Linux Sed Command”从CSV文件中删除无效字符

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 = These are the characters I need to remove

2 个答案:

答案 0 :(得分:0)

假设您的输入文件不是不是 Unicode,因此您确实要删除所有NUL字节,则可以使用以下命令在Shell上执行此操作:

tr -d \\000 <input.csv >output.csv

答案 1 :(得分:0)

要删除文本文件中的空字节

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)

希望这会有所帮助。