Connecting MySQL to external data source using proprietary ODBC Driver - mysql

I have a cloud-based CRM system that provides a proprietary ODBC Driver.
This has been fully configured, set up as a system DSN, and tested with no errors. The system DSN is called 'servicenowdev'.
I also have a local MySQL server, that I would like to connect to the CRM system and download periodic backups. I can connect to the 'servicenowdev' DSN using i-SQL and run queries fine, but I would like to link the server (MS SQL Server "Linked Server" style), but in MySQL.
Where do I start with connecting my MySQL server to this dsn?
I don't know the internal details of the CRM system to provide a database name, host, port or any other details for a FEDERATED SERVER connection.
Can I create views straight to the dsn's tables, or would I have to import data locally?

I have an alternative, albeit not the most efficient, method. In essence I start with MS Access by creating pass through query using the
ServiceNow ODBC. (SELECT * FROM servicenow.table)
I then perform an insert query into a local access table using the pass through query as the source
(INSERT INTO table SELECT * FROM query)
Then I export the table to the MySQL database using the MySQL ODBC.
Hoping you've found a better method but if not then hope this helps.

Related

How to connect Azure Database for MySQL flexible server in Azure SQL Server Database

I am trying to set up a connection between Azure MySQL flexible server and Azure SQL database mainly to read data from MySQL and store it in the SQL Server periodically (multiple times a day).
I was thinking of creating a stored procedure inside my SQL Server database; however, I cannot seem to get a connection from the SQL Server into the MySQL database.
I know with ODBC you can connect MySQL to on-prem SQL Server, but unfortunately, there is nothing I have found for the same functionality for Azure SQL Server.
Has anyone done this? Is this possible?
I have tried to set up an ODBC connection, but it did not work as the SQL Server is on Azure.
I tried setting up a linked server inside SQL Server straight to MySQL, but it doesn't seem possible as the SQL Server is not on-prem.
I tried creating external database objects based on the following link.
With all these approaches, my expectation was to surface the MySQL tables from Azure SQL Server/SSMS.
Thank you for your help in advance!
MySql Workbench is the perfect option for connecting the azure database for mysql.
for that we need to create flexible server in azure portal. I created flexible server in azure portal.
Image for reference:
I created database in flexible server by clicking add in in database option. it crated successfully.
Image for refence:
I installed MySQL Workbench in my local system.
you can get your required fields to connect the server in connect tab.
Image for reference:
I connected to the server by filling required fields.
Image for reference:
Click on ok. It connected successfully.
Image for reference:
AFAIK Export the data from Azure mysql flexible server in the form of sql script through MySQL work bench and import that file in Azure sql database through SSMS. IN this we can write data into Azure Sql database.
I have had to create an Azure Function App that contains a Timer function that reads the data from the MySQL data and pushes it to SQL Server every 15 minutes (as were the requirements).
Thank you for everyone for commenting.
It seems you can use Data-in replication.

How to connect to a remote MySQL from an Azure SQL server/database

sorry if title is not so clear, probably I am not finding what I need due I do not know how to search
I have few MySQL servers is separated online servers (from different wordpress) and I want to load some of the data on those databases/tablets into a SQL database located on Azure.
inside Azure portal itself I do not see where to establish external connections, neither at server level, neither at database level
I download and install Microsoft SQL Server Management Studio, connect to the server, I can see my databse and the master one, Security with logins, and Integration Service Catalog, nothing else.
I was looking for something like:
https://www.jetbrains.com/help/go/db-tutorial-connecting-to-ms-sql-server.html#step-3-connect-to-microsoft-sql-server-with-datagrip
but nowhere ...
maybe something like this:
https://www.devart.com/odbc/mysql/docs/microsoft_sql_server_manager_s.htm
but no Servers objects option available on my SSMS
Can be this done?
Note: Azure database is a basic wfor now, if that is a limitation
Some choices.
In your SQL Server Management Studio create a linked server pointing to each MySQL instance. You found the instructions for that. https://www.devart.com/odbc/mysql/docs/microsoft_sql_server_manager_s.htm But it probably will not work in Azure SQL Server; you don't have access to the underlying Windows OS to install stuff like MySQL ODBC drivers, which you need. (You could ask Azure techsupport if they can help.)
In each MySQL instance, try creating a federated table connection to appropriate table in SQL Server. That cross-vendor federation stuff only works in MariaDB, however; MySQL's federation only goes MySQL <--> MySQL.
Write yourself a purpose-built extract / transform / load (ETL) program, and arrange to run it every so often. Program it to connect to all the servers involved, retrieve the data needing to be transferred from your MySQL servers, and update / insert that data on the SQL server.
(edit) You may be able to use command-line SQL client programs. mysqldump, with its --compatible option, may generate usable INSERT statements in a file. You then may be able to use sqlcmd to run those INSERTs on your Azure server. It's going to take some hacking, and may take using sed(1) or awk(1) to make the MySQL output compatible with SQL Server.
I believe the third option is the most robust one for production use.

How to convert '.bak' file into '.sql' file in order to import the database in MySQL phpMyAdmin?

I'm a PHP developer by profession. I'm using Ubuntu Linux on my machine.
I don't have any idea about .Net framework and MS SQL Server Express database.
I've received a file titled project_db.bak and I have to convert it into project_db.sql in order to import the same database into MySQL.
I searched over the Internet for the solution. I found couple of answers but they are asking to use MS SQL server tools which I can not. I have to achieve this conversion in some other way.
Can someone please help me in this regard?
MS Sql Server typically generates binary backups, so what you have I guess is a backup. To restore it to a "querable" state you will need MS tools or RESTORE statment someway executed against the Motor (that you will need). Once it was "restored" (that is the reverse to a MS backup) you can dump (in MySql terms) with a tool or with a script
Create a Virtual Machine Windows 7 or better.
In the VM make sure you have a second network card that's set to a private network with your Host so you can connect to your Host MySQL you will need a User in your MySQL Server setup that allows connections from your remote network
in this VM install SQL Server, and SQL Server Management Studio & Navicat from that you can then restore the .bak file, once you have it restored. you will need another external tool that allows you to export as another format for this i use Navicat export is as another format. you can then connect to your MySQL Server and import that exported file.

Connect to a MySQL database via Excel online

We build and deploy excel 'tools' which run queries in VBA from an Access database. However, we want to make this tool available to a client without sending them over an entire database along with the excel file.
Q. Can we store a read-only database online, using MySQL or even SQL Express, and allow any machine with our Excel file (and connection setup) to access this? I.e. we want our Excel file to connect to a 'cloud' database
Background: I've used PhpMyAdmin to connect and query databases, but this has always been in a local development environment.
I think you would use a connection string in Excel to connect MySQL or SQL Express:
In Excel, go to Data, Connections, Add:
MySQL: Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
SQL Express: Driver={SQL Server};Server=myServerAddress;Database=myDataBase;Uid=myUsername;
Pwd=myPassword;

What is the purpose of an ODBC driver when connecting to a MySQL server?

I've been wondering what are the benefits of using an ODBC driver to interface with a MySQL server? What advantage does that have over directly connecting to the server via TCP and firing off your SQL commands directly?
I'm working with a code base written in labVIEW that references a UDL file which references a data source and its associated ODBC driver to handle the connection to the server. I'm not yet convinced its necessary. I can see the benefit of using a driver if you are connecting to Microsoft Access or excel but if your recipient is an SQL server of some type why would you need a middle man to handle your SQL commands?
I have used the ODBC driver 3.51 for connecting to MySQL Community Server 5.1 for some time now. The ODBC driver allows you (on a Windows computer) to add your MySQL connection to the ODBC data sources list. Now you can reference this data source in many compatible applications. I have been able to use this ODBC connection in VB.Net applications as well as proprietary applications for printing and other functions with ODBC functionality.
I would say that when coding web or python applications i always use the built in MySQL packages, but if you need to access your data through VB.Net or another proprietary application (like a stand-alone windows app) you probably need to set up a system ODBC data source to access your database. To me the ODBC lets Windows access MySQL easily. Without Windows i don't think you need it.
Why ODBC and not JDBC? Some reasons come to mind in order of helpfulness when using JDBC:
Standard api to access the results from a query. To iterate over the results and to get the actual values with the appropriate type.
No need to know how the protocol works to connect to the server. Just use the host, user, password, send the SQL and iterate over the result.
Abstract out the connection to the database. Changing the database should be simpler.
Standard way to commit and rollback for transaction based changes.
In my experience, JDBC is very verbose. You need to write many lines to accomplish simple things. I've found the Spring JDBCTemplate wrapper to be an extremely easy to use alternative for simple stuff.