The below powershell cmdlets are used to create csv files by querying the SQL server.
All the variables containing the server name and DB details:
- #Variable to hold variable
- $SQLServer = "XX.XX.XXX.XX"
- $SQLDBName = "TestDB"
- $uid ="domain\userID"
- $pwd = "password123"
- #SQL Query
- $SqlQuery = "SELECT * from tableName;"
- $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
- $SqlConnection.ConnectionString = "Server = $SQLServer; Database = $SQLDBName; Integrated Security = True;"
- $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
- $SqlCmd.CommandText = $SqlQuery
- $SqlCmd.Connection = $SqlConnection
- $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
- $SqlAdapter.SelectCommand = $SqlCmd
- #Creating Dataset
- $DataSet = New-Object System.Data.DataSet
- $SqlAdapter.Fill($DataSet)
- $DataSet.Tables[0] | out-file "\\location\test.csv"
Note
When Intergrated Security ="true" is used, the cmdlets use current logged in user credentials - network credentails if Integrated Security ="false" we need to use the declared $uid and $pwd while establishing the connection.
The File is saved in the location or FTP path as test.csv
The SFTP is Secured FTP; the following powershell command helps to move any file to the SFTP location and it needs "Posh-SSH module" We need to install this module.https://github.com/darkoperator/Posh-SSH
The Powershell variable mentioned in the below code snippnet stores all the details of the SFTP or FTP server, where the files need to be moved.
- #Declaring Variable
- $sourceSFTPIP = "xx.xx.xxx.xx"
- #IP address of the SFTP server
- $LocalFilePath = "C:\test.csv";
- $SFTPPath = ".\sharedFilePath\"
- # folder location inside SFTP server
- $secpasswd = ConvertTo - SecureString "password" - AsPlainText - Force
- # the below object is used to key in the username and password automatically rather than promt the user to username and password
- $mycreds = New - Object System.Management.Automation.PSCredential("username", $secpasswd)
- # Module need to use SFTP Path
- Install - Module - Name Posh - SSH# get sftp password this command can be used
- if user need to feed in the user name and password at the time of running the script
- # $credential = Get - Credential# Creating PS session to be used
- $session = New - SFTPSession - ComputerName $sourceSFTPIP - Credential $mycreds - AcceptKey
- # Move File using ps session
- Set - SFTPFile - SessionId $session.SessionId - LocalFile $LocalFilePath - RemotePath $SFTPPath
- $session.Disconnect()
We need to disconnect the session that was created to do this operation. Once it has run, the file that is present in sharepath is moved to the SFTP server location.