查找联接列的实用程序

时间:2018-09-05 16:10:29

标签: python sql r sql-server

在SQL Server中给了我几个表,我正在尝试找出联接它们的最佳方法。

我所做的是:

1) open a connection in R to the database
2) pull all the column names from the INFORMATION_SCHEMA.COLUMNS table
3) build loops in R to try every combination of columns and see what the row count is of the inner join of the 2 columns

我想知道是否有更好的方法可以解决此问题,或者是否有软件包或实用程序可以帮助解决此类问题。

1 个答案:

答案 0 :(得分:-1)

您可以使用pandas在python中进行联接。 Pandas具有强大的IO引擎,因此您可以从SQL Server导入pandas数据帧,使用python执行联接,然后写回SQL Server。

下面是我用来执行从SQL Server导入和导出到MySQL表的脚本。我将python软件包sqlalchemy用于我的ORM连接。您可以按照以下示例操作,并阅读有关熊猫连接的信息。

import pyodbc
import pandas as pd
from sqlalchemy import create_engine

# MySQL info
username = 'user'
password = 'pw'
sqlDB = 'mydb'

# Create MSSQL PSS Connector
server = 'server'
database = 'mydb'
connMSSQL = pyodbc.connect(
    'DRIVER={ODBC Driver 13 for SQL Server};' +
    f'SERVER={server};PORT=1433;DATABASE={database};Trusted_Connection=yes;')

# Read Table into pandas dataframe
tsql = '''
SELECT  [Index],
        Tag,
FROM [dbo].[Tags]
'''
df = pd.read_sql(tsql, connMSSQL, index_col='Index')

# Write df to MySQL db
engine = create_engine(
    f'mysql+mysqldb://{username}:{password}@localhost/mydb', pool_recycle=3600)
with engine.connect() as connMySQL:
    df.to_sql('pss_alarms', connMySQL, if_exists='replace')