批处理文件操作csv并用mysql导入

网络开发

我试图导入CSVmySQL使用Batch script导入csvto的部分mysql有效,但如果csv文件包含空字段(如苹果、香蕉、猕猴桃),则它无法正常工作。

所以,我试图做的是事前操作csv文件,以代替,,, ,我试图在网上找到一些代码来实现这一点,因为这是我的第一个代码,Batch script但它不起作用。

这是我的Batch script

@echo off 
    setlocal enableextensions disabledelayedexpansion

    set "search=,,"
    set "replace=, ,"

    set "textFile=eform.csv"

    for /f "delims=" %%i in ('type "%textFile%" ^& break ^> "%textFile%" ') do (
        set "line=%%i"
        setlocal enabledelayedexpansion
        >>"%textFile%" echo(!line:%search%=%replace%!
        endlocal
    )
@echo on
C:\xampp\mysql\bin\mysqld
C:\xampp\mysql\bin\mysql -u root -p kepdb_db < infile.sql
pause

如果此脚本有效,然后如果 csv 文件包含 3 个连续的空字段 ->apple,,,,banana那么它将被转换为 ->apple, , , ,bananaapple, ,, ,banana??

aschipfl

插入一行:

set "line=!line:%search%=%replace%!"

就在该行之前:

>>"%textFile%" echo(!line:%search%=%replace%!

由于使用的子字符串替换功能从左到右扫描字符串以进行替换,因此已处理的字符不会参与进一步的替换。因此,,,变成了, ,,因为第二个,已经被前一个替换处理了,所以第三个是独立的。出于同样的原因,,,,,变成, ,, ,,依此类推。因此,您必须进行第二次扫描和更换。

请注意,当任何字段值,本身包含 的序列时,这可能会产生意想不到的结果(当值被引用时这是可能的,例如apple,"ora,,nge",,,banana;apple,"ora, ,nge", , ,banana由于不考虑引用,这将被修改为,虽然apple,"ora,,nge", , ,banana是正确的)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章