首页 > 解决方案 > db 中表的第一行的元素返回:列名和两个破折号以及它的值

问题描述

我正在使用 powershell 来存储和从数据库中获取数据。

我在从表的第一行获取奇怪的数据时遇到问题。看起来像这样 图片

这是我的 powershell 脚本。

Invoke-SqlCmd -ServerInstance 'localhost' -inputfile 
C:\Users\Matej\Desktop\SQLQuery2.sql

function insertToDb($line, $PlaylistId){

$position = $line.ToString().Split(',').Get(0)
$songName = $line.ToString().Split(',').Get(1)
$artistName = $line.ToString().Split(',').Get(2)
$link = $line.ToString().Split(',').Get(4)
Write-Output 'PlaylistId: '$PlaylistId


$insertSongQuery = "
    INSERT INTO SONG
        (position,name,artist,link,playlist_id)
    VALUES
        ('$position','$songName','$artistName','$link','$PlaylistId')
    GO
"
#Invoke-SQLcmd -ServerInstance 'localhost' -query $insertSongQuery -U vikiUser - 
 Password 1234 -Database ProjectDb
 }

function getPlaylist{
$shortName = $PSItem.ToString().Split(',').Get(0);
$name = $PSItem.ToString().Split(',').Get(1);
$insertquery = "
 INSERT INTO PLAYLIST
       (name, type) 
 VALUES 
       ('$name','country') 
 GO 
"
$getPlaylistIdQuery = "
    SELECT ID
    FROM PLAYLIST 
    WHERE PLAYLIST.name = '$name'
    GO
"
Invoke-SQLcmd -ServerInstance 'localhost' -query $insertquery -U vikiUser -Password 1234 -Database ProjectDb 
$PlaylistId= Invoke-SQLcmd -ServerInstance 'localhost' -query $getPlaylistIdQuery -U vikiUser -Password 1234 -Database ProjectDb


(Invoke-WebRequest -Uri https://spotifycharts.com/regional/$shortName/daily/latest/download).Content > out.csv
cat out.csv | Select-Object -skip 2 | select -First 10 | ForEach-Object {insertToDb $_ $PlaylistId}

#get 10
#insert Song(position,name,artist,playlist id)
}


cat C:\Users\Matej\Desktop\countries.txt | ForEach-Object {getPlaylist($_)}

我的想法是,它将数据库作为列和行的格式,在第一行之上,在列之间有对齐数据库外观的行,这就是为什么我得到第一个的名字行以及值。我怎么能越过这个?我尝试分配一个全局“标志”变量并将第一个值设置为 0,将其他值设置为正常值,但我无法在 powershell 中编辑全局值(我猜)。我应该怎么办?

标签: mysqlsqldatabasepowershell

解决方案


正如 Lee 指出的那样,这不是错误,这是具有标题的表格数据的默认设置。所有数据库都可以。如果您不想要标题,请引用数据值。由于您没有显示任何示例数据,因此预期输入/输出。

所以,像这样的事情......

cat out.csv | 
Select-Object -First 10 | 
ForEach-Object {insertToDb $PSItem.playlist_id}

推荐阅读