0

リスト要素にちなんで名付けられたfor loopを使用して、〜1900個のテーブルを繰り返し作成したいと考えています。

新しく作成された各テーブルには、単純な SQL クエリ "WHERE Cable_Op = [上記と同じリスト要素]" を満たす行のみが含まれます。

基本的に、Cable_Op = その同じ要素である行のみを含む、リスト内の各要素のテーブルが必要です。

1900 個の要素のリストがあり、それぞれがテキスト文字列です。

ただいま、がんばってます

cursor = conn.cursor()

with open("C:/Python27/COALS_CARS/PROVIDERS.txt") as f:
providerlist = f.read().splitlines()

for provider in providerlist:
    cursor.execute('SELECT UID, COUNTY, STATE, Cable_Op into [provider] from COALS where Cable_Op =provider')

無駄に。何時間もの検索で、リストに基づいて繰り返し新しいテーブルに名前を付けたり作成したり、リストに基づいて繰り返しクエリしたりすることについて言及していません。

基本的には、Cable_Op = "AT&T" の値のみを持つ "AT&T" というテーブル、Cable_Op = "Comcast" の値だけを持つ "Comcast" というテーブルなどが必要です (AT&T と Comcast はリスト要素です)。

pyodbc はこれを許可しますか?

前もって感謝します。

4

1 に答える 1

0

最初のいくつかの質問:

  • これは1回限りの操作ですか?それとも頻繁に実行され、テーブルがリロードされますか?
  • 目的に疑問の余地はありませんが、ループを使用して各プロバイダーのベース テーブルの上にビューを作成すると、データが最新になりますか?
  • どの RDBMS を使用していますか?

テーブルを作成する場合 (適切な権限がある場合)

これを行うには 2 つの方法があります。

  1. 使用: (SQL 構文)

     CREATE TABLE <table name> (<field definitions>)
     -- OR --
     TRUNCATE TABLE <table name> -- If the table already exist clear out the data

     -- Then, load in the data...

     INSERT INTO <table name> (<field list>) SELECT <field list> FROM COALS WHERE Cable_Op = <table name>
  1. 使用: (SQL 構文)

     SELECT <field list> INTO <table name> FROM COALS WHERE cable_op = <table name>
     -- will fail if the table already exists

forループで...テーブルが存在することを確認し、存在する場合は適切に処理します(切り捨ててリロードまたはドロップします)テーブルを作成してロードします

コード スニペットでは、テキスト置換を使用していません。以下を参照してください(テーブルの存在をチェックしません)


    import pyodbc


    def main():
        serverName = 'DETAIL'
        databaseName = 'FS001'
        conn = pyodbc.connect('DRIVER={SQL Server};Server=%s;Database=%s;Integrated Security=true;' % (serverName, databaseName))
        cursor = conn.cursor()

        with open("C:\Data\PROVIDERS.txt") as f:
            providerlist = f.read().splitlines()

        for provider in providerlist:
            cursor.execute("SELECT UID, COUNTY, STATE, Cable_Op into [%s] from COALS where Cable_Op = '%s'" % (provider, provider))

        cursor.execute('select * from %s' % 'INFORMATION_SCHEMA.TABLES')
        rows = cursor.fetchall()
        for row in rows:
            print row

    if __name__ == '__main__':
        main()
于 2013-10-29T23:09:15.283 に答える