2017-06-23 4 views
0

Excelファイルを取得し、データを変換してから変換したデータを同じExcelファイルの別のシートに保存する必要があります。現時点では、Microsoft SQL Server Management Studio内のテーブルにExcelソースシートを手動でインポートし、SQLスクリプトを実行してデータを変換し、ビューを作成することで、この作業を行っています。次に、この変換されたデータをビューからコピーしてExcelファイルの2番目のシートに貼り付けます。Excelファイルのデータを変換するためのSQL Serverスクリプトを実行するPythonアプリケーション

私はこのプロセスをPythonを使って自動化しようとしていますが、どうやって起動するかについてはとても迷っています。私は私のスクリプトを実行するために使用できるpyodbcやpymysqlのようなパッケージを見てきましたが、私が理解できないデータをExcelからインポート/エクスポートしています。

指定したExcelファイルからデータをインポート/エクスポートできるSSMSにこれらのパッケージを統合できますか?私のSQLスクリプトが実行できるテーブルにExcelデータをインポートすることで、何とかSSMSを回避できますか?

ご提案は大歓迎です。

+0

あなたのExcelは、Excelシートから読み込んだデータ以外のテーブルに依存していますか? – jhole89

+0

はいマッピング用にいくつかの参照テーブルを使用します。これらはもともとExcelからインポートされています。 – KOB

答えて

0

を、私はここで考慮すべき点がいくつがあり、それを理解したよう:...

はしかし、私は有用であることが分かるかもしれない、ExcelでのPythonを実行することが可能と思われることが分かりました:

  1. Excelファイル内のデータ。
  2. SQLサーバーの参照データ。
  3. SQL変換。

私はそうのようなパンダを使用してPythonでそれをすべてやってお勧めしたい:

import pandas 
from sqlalchemy import create_engine 

# step1 - load excel sheet to dataframe 
excel_data_df = pandas.read_excel('/path/to/excel/file.xls', sheetname='someSheetName') 

# step2 - load ref data to dataframe 
ServerName = "myserver" 
Database = "mydatabase" 
TableName = "mytable" 

engine = create_engine('mssql+pyodbc://' + ServerName + '/' + Database) 
conn = engine.connect() 

sql_table1_df = pandas.read_sql_table(TableName, con=conn) 

# step3 - do your sql operations in pandas dataframes. For example join the two together: 
result = pandas.merge(excel_data_df, sql_table1_df, how='inner', on=['key1','key2']) 

# Finish by writing back to excel 
result.to_excel('path/to/excel/file.xls', sheet_name='someOtherSheet') 

バグのカップルが、全体的なアプローチがあるかもしれないので、私は、現時点ではこれをテストすることができませんようまくいくはずです。

+0

これは良い解決策のようです。ありがとうございます。私が持っていた1つの問題は、このプロジェクトには実際にはSQLスクリプトとして書かれた異なる変換ルールを持つ、いくつかの異なるタイプのExcelファイルが定期的に変換する必要があるということでした。これらのSQLスクリプトのすべてをパンダに相当するものに変換することは、実質的な作業です。しかし、私はpandasデータフレームにSQLクエリを実行できるpandasqlパッケージを見つけました。 – KOB

+0

あなたはOPでそう言及していませんでしたので、私はそれが1つのExcelファイルだと仮定しました。 どこからでもこれらのExcelファイルを入手していますが、代わりにデータベースに保存してすべての作業を行うだけです。とにかく終わりにエクセル輸出の目的は何ですか? – jhole89

+0

ファイルは、あるデータベースshemaから別のデータベースに移植されるように変換されています。それらはExcelファイルとして私たちに送られます。 – KOB

0

私は、ほとんどのXLSXのPythonライブラリのパフォーマンスや機能について本当にわかりません。私はSQLの相互運用性のためのCSVに行くだろうが、XLSX形式にこだわっている場合、私はXLSXWriter Pythonモジュールは輸出のために大丈夫だと言うことができますが、私はインポートを管理する強力なライブラリをお勧めできませんでした

Calling python script from excel/vba

関連する問題