0

我正在使用以下代码尝试使用 Log Parser 启动并将我拥有的 .csv 文件的内容转储到 SQL 数据库中。我不得不尝试使用自定义函数来去除非字母数字字符,以便可以动态创建列,因为最终目标是使用我给它的任何 .csv 文件进行这项工作。

这是代码:

start-process -NoNewWindow -FilePath "C:\Program Files (x86)\Log Parser 2.2\LogParser.exe" -ArgumentList @"

"Create Function [dbo].[RemoveNonAlphaNumCharacters](@Temp VarChar(1000))
Returns VarChar(1000)
AS
Begin

    Declare @KeepValues as varchar(50) = '%[^a-z0-9]%'
    While PatIndex(@KeepValues, @Temp) > 0
        Set @Temp = Stuff(@Temp, PatIndex(@KeepValues, @Temp), 1, '')

    Return @Temp
End
SELECT.RemoveNonAlphaNumCharacters * INTO SQLCounters FROM C:\Users\SeanLon\Desktop\SQL_Log_0.csv" -i:CSV -o:SQL -server:MJNHNX4 -database:PerfmonCounters -driver:"SQL Server" -createTable:ON

"@

和错误:

start-process : Process with an Id of 221104 is not running.
At C:\Users\seanlon\Desktop\Performance\Powershell examples\LogParser.ps1:1 char:1
+ start-process -NoNewWindow -FilePath "C:\Program Files (x86)\Log Parser 2.2\LogP ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Start-Process], ArgumentException
    + FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.StartProcessCommand

启动进程或日志解析器能否简单地处理参数列表中的复杂 SQL?还是 LogParser 进程在其他事情发生之前关闭?

4

2 回答 2

1

在 PowerShell 3.0 上,它看起来像是干净利落地传递了参数。但是,为了简化这一点,您可以将 SQL 放在文件 foo.sql 中,然后像这样调用 logparser:

$logParser = "C:\Program Files (x86)\Log Parser 2.2\LogParser.exe"
& $logParser file:c:\foo.sql -i:CSV -o:SQL -server:MJNHNX4 -database:PerfmonCounters -driver:"SQL Server" -createTable:ON
于 2013-05-28T20:05:43.293 回答
0

LogParser 对数据库一无所知,它在其不处理存储过程的内部引擎中解释和执行简单的 SQL 查询。另请参阅Logparser 无法识别 SQL 命令

于 2013-06-05T20:40:14.690 回答