如何分隔CSV文件中的空格和分号导入到MS Access?
问题描述:
这里是我的CSV文件示例:如何分隔CSV文件中的空格和分号导入到MS Access?
2000-01-10 19:59;0.000;m3/h;100.9;-0.0;100.9;m3;0.000;0.000;99;66
2000-01-10 20:14;0.000;m3/h;100.9;-0.0;100.9;m3;0.000;0.000;99;66
2000-01-10 20:29;0.000;m3/h;100.9;-0.0;100.9;m3;0.000;0.000;99;66
2000-01-10 20:44;0.000;m3/h;100.9;-0.0;100.9;m3;0.000;0.000;99;66
2000-01-10 20:59;0.000;m3/h;100.9;-0.0;100.9;m3;0.000;0.000;99;66
2000-01-10 21:14;0.000;m3/h;100.9;-0.0;100.9;m3;0.000;0.000;99;66
我有一个问题分离的日期和时间。在分隔符中,我只能选择分号。我只能选择一个。
我怎样才能将它们全部分开?
答
这不是分隔符。
选择定界符至无。
选择分隔符至;
然后导入/链接为DateTime并将其拆分(如果您确实必须)。
答
如果在导入CSV文件之前数据库需要这样做,则可以使用小批处理文件将CSV文件每行中的第一个空格替换为具有单独字段值的日期和时间。
@echo off
setlocal
rem Define CSV file to process which can be also passed as argument
rem and the temporary file needed while processing the CSV file.
if "%~1" == "" (
set "CSV_File=C:\Temp\Test.csv"
set "TempFile=%TEMP%\Test.tmp"
) else (
set "CSV_File=%~1"
set "TempFile=%TEMP%\%~n1.tmp"
)
rem Check existence of CSV file to process and if really existing,
rem write each line of CSV file to temporary file with replacing
rem the first space by a semicolon. After having processed each
rem line move the temporary file over the CSV file.
if exist "%CSV_File%" (
if exist "%TempFile%" del "%TempFile%"
for /F "usebackq eol=# tokens=1* delims= " %%A in ("%CSV_File%") do echo %%A;%%B>>"%TempFile%"
move /Y "%TempFile%" "%CSV_File%"
)
endlocal
对于理解使用的命令以及它们如何工作,打开命令提示符窗口中,执行有下面的命令,并完全读取显示每个命令的所有帮助页面非常谨慎。
-
call /?
...对于%~1
和%~n1
的解释。 del /?
echo /?
endlocal /?
for /?
if /?
move /?
rem /?
set /?
setlocal /?
而微软的文章关于Using command redirection operators可能也是有趣的了解这个小批量代码中使用重定向操作符>>
。
用分号替换空格吗? – Arashsoft
你是如何上传CSV的? – Spidey