Пакетная вставка Python в mssql - PullRequest
0 голосов
/ 25 мая 2019

Мне нужно сделать задачу потока данных.Поэтому из конкретной таблицы SQL извлеките все данные и перенесите их в другую таблицу SQL.Я использую библиотеку adodbapi для этого соединения OLEDB, хотя некоторые люди говорят, что для Azure и работы с Microsoft теперь лучше pyodbc.

Так что я копирую таблицу SQL и извлекаю ее в виде списка кортежей.

   source_cursor = adodbapi.connect(sql_database, 0).cursor()
   command_source_data = source_cursor.execute(select_data)
                reader = list()
                source_data =source_cursor.fetchall()
                if source_data is not None:
                    for row in source_data:
                        reader.append(row)

Оттуда я получаю типы строк SQL, один столбец со строками, подобными этим:

<class 'list'>: [<SQLrow={environment_name:'New_environment'}>, <SQLrow={environment_name:'new_environment_1'}>, <SQLrow={environment_name:'new_environment2'}>]

далее мне нужно очистить его, чтобы можно было выполнить, как пакетную вставку:

INSERT INTO table_name (column_list)
VALUES
    (value_list_1),
    (value_list_2),
    ...
    (value_list_n);

поэтому я делаю это:

reader_values =  " ,".join(str(x).strip() for x in reader)  
reader_values = reader_values.replace(',)', ')')
reader_values = reader_values.replace('\')', ')')
reader_values= reader_values.strip()

я получаю следующие значения: '(\' New_environment), (\ 'new_environment_1), (\' new_environment_2 \ ')'

А моя вставка не удалась из-за синтаксической ошибки.

Просто не могу заменить и переместить знак разделения (), чтобы можно было вставлять данные.

Есть ли какое-то решение под моим носомчто я пропускаю?

РЕДАКТИРОВАТЬ: Это было на отладчике, как это, в новой программе все было хорошо с разделителями пробела.Проблема заключалась в том, чтобы извлечь имена столбцов таблицы и поместить их в запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...