我有一台Linux服务器,将在一天中生成需要插入到数据库中的多个文件;使用Putty我可以sftp他们到运行SQL 2008的服务器。问题是文件本身的结构,它有一个文本的字符串将被放置在不同的列,但批量插入在SQL试图把它全部到一列而不是六列。 Powershell可能不是最好的方法,但我已经在几个网站上看到它如何找到并替换或附加到行尾,它是否可以计数和插入?计算字符串中的字符,然后使用PowerShell插入分隔符
所以文件看起来像这样:'18240087A + 17135555555 3333333333',其中18,24,00,87,A是不同的列,那么在A和+之间有一个空格,即字符数10 -19是另一列,则字符20-30是列,字符31-36是新列的空格等等。所以我想插入一个'|'或一个',',以便sql能够理解列结束的位置。 PowerShell可以随机计数吗?
这可能不是回应所有回答的方式,我提前道歉。由于这是我的第一个PowerShell脚本,我很欣赏你们每个人的意见。这是生成CDR记录的Avaya SIP服务器,我必须从服务器中提取CDR记录,并将其插入SQL以供稍后报告。导出的文件是这样的:
18:47 10/15
18470214A 14434444444 3013777777 CME-SBC HHHH-CM 4 M00 0
起初我只是想删除第一线并运行
$测试=获取内容C::针对输出,这是我从Kieranties后修饰的脚本\共享\ CDR \ testCDR.txt
$图案=“^(({2})。 {2})({1})({2})({1})({1})\ S *({15})({10})\ S *({7 })\ S *(。{7})\ S *(。{1})\ S *(。{1})({如果($ test -match $ pattern){ $ result = $ matches.Values | {1})(。{1})\ s *(。*)$“
选择 - 第一($ matches.Count-1)
[array]::Reverse($result, 0, $result.Length)
$result = $result -join "|"
$result | Out-File c:\Share\CDR\results1.txt
}
但后来我意识到我需要的第一线,因为它包含的日期。不过,我可以尝试以另一种方式工作。
我现在也看到,有些时候,该文件包含2个或更多的行CDR信息,如:
18:24 10/15
18240087A 14434444444 3013777777 CME-SBC HRSA- CM 4 M00 0
18240096A 14434444445 3013777778 CME-SBC HRSA-CM 4 M00 0
尽管名为.ps1文件我做不给第二个字符串,所以我尝试添加在此:
的foreach($数据在$测试) { $数据= $数据-split( '')
和它无法运行。我怎样才能做多行(可能是第一行)?如果您知道可以提供帮助的教程,那也非常感谢!
感谢您的回答! –