Ready to get started?

Learn more about the Trello PowerShell Cmdlets or download a free trial:

Download Now

PowerShell Scripting to Replicate Trello Data to MySQL

Write a simple PowerShell script to replicate Trello data to a MySQL database.

The CData Cmdlets for Trello offer live access to Trello data from within PowerShell. Using PowerShell scripts, you can easily automate regular tasks like data replication. This article will walk through using the CData Cmdlets for Trello and the CData Cmdlets for MySQL in PowerShell to replicate Trello data to a MySQL database.

After obtaining the needed connection properties, accessing Trello data in PowerShell and preparing for replication consists of four basic steps.

Trello uses token-based authentication to grant third-party applications access to their API. When a user has granted an application access to their data, the application is given a token that can be used to make requests to Trello's API.

Trello's API can be accessed in 2 different ways. The first is using Trello's own Authorization Route, and the second is using OAuth1.0.

  • Authorization Route: At the moment of registration, Trello assigns an API key and Token to the account. See the Help documentation for information on how to connect via the Authorization route.
  • OAuth Route: Similar to using Authorization, OAuth creates an Application Id and Secret when you create your account. See the Help documentation for information on how to to connect.

Collecting Trello Data

  1. Install the module:

    Install-Module TrelloCmdlets
  2. Connect to Trello:

    $trello = Connect-Trello -APIKey $APIKey -Token $Token
  3. Retrieve the data from a specific resource:

    $data = Select-Trello -Connection $trello -Table "Boards"

    You can also use the Invoke-Trello cmdlet to execute pure SQL-92 statements:

    $data = Invoke-Trello -Connection $trello -Query 'SELECT * FROM Boards WHERE Name = @Name' -Params @{'@Name'='Public Board'}
  4. Save a list of the column names from the returned data.

    $columns = ($data | Get-Member -MemberType NoteProperty | Select-Object -Property Name).Name

Inserting Trello Data into the MySQL Database

With the data and column names collected, you are ready to replicate the data into a MySQL database.

  1. Install the module:

    Install-Module MySQLCmdlets
  2. Connect to MySQL, using the server address and port of the MySQL server, valid user credentials, and a specific database with the table in which the data will be replicated:

    $mysql = Connect-MySQL -User $User -Password $Password -Database $Database -Server $Server -Port $Port
  3. Loop through the Trello data, store the values, and use the Add-MySQL cmdlet to insert the data into the MySQL database, one row at a time. In this example, the table will need to have the same name as the Trello resource (Boards) and to exist in the database.

    $data | % { $row = $_ $values = @() $columns | % { $col = $_ $values += $row.$($col) } Add-MySQL -Connection $mysql -Table "Boards" -Columns $columns -Values $values }

You have now replicated your Trello data to a MySQL database. This gives you freedom to work with Trello data in the same way that you work with other MySQL tables, whether that is performing analytics, building reports, or other business functions.

Notes

  • Once you have connected to Trello and MySQL in PowerShell, you can pipe command results to perform the replication in a single line:

    Select-Trello -Connection $trello -Table "Boards" | % { $row = $_ $values = @() $columns | % { $col = $_ $values += $row.$($col) } Add-MySQL -Connection $mysql -Table "Boards" -Columns $columns -Values $values }
  • If you wish to replicate the Trello data to another database using another PowerShell module, you will want to exclude the Columns, Connection, and Table columns from the data returned by the Select-Trello cmdlet since those columns are used to help pipe data from one CData cmdlet to another:

    $columns = ($data | Get-Member -MemberType NoteProperty | Select-Object -Property Name).Name | ? {$_ -NotIn @('Columns','Connection','Table')}