Чтение MDF-файла в Pandas DataFrame
Я пытаюсь прочитать файл MDF Microsoft SQL Server в панде данных Python. Я чрезвычайно потерян на предмете и был бы действительно признателен за любой толчок в правильном направлении. Пожалуйста, дайте мне знать любую информацию, которая поможет ответить на этот вопрос.
Вот некоторые из ресурсов, которые я нашел, но не могу найти в готовом продукте: https://pandas.pydata.org/pandas-docs/stable/io.html http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_sql.html Python открывает файл MDF Microsoft SQL Server
1 ответ
Мне пришлось 1.) прикрепить .mdf
файл на мой локальный экземпляр сервера SQL через студию SQL Server, а затем 2.) открыть порт на моем компьютере, чтобы разрешить доступ на чтение / запись к серверу SQL. Если мы сможем сделать.mdf доступным на сервере sql, то сможем подключиться к нему через pandas/sqlAlchemy с помощью pd.read_sql()
и строка подключения к серверу sql.
Перейдите в папку вашего
.mdf
файл, и поделиться файлом со всеми на машине. На Windows 10 я сделал это, щелкнув правой кнопкой мыши файл, выделивGive access to
и выбравSpecific people...
, Затем я добавилeveryone
из раскрывающегося списка, давая им разрешения на чтение / запись. Этот шаг важен, поскольку я не мог прикрепить файл к серверу sql иначе. Теперь откройте студию управления сервером sql, подключитесь к своему экземпляру сервера sql и щелкните правой кнопкой мышиDatabases
, Там у вас есть вариантAttach...
где вы можете следовать меню, чтобы выбрать.mdf
файл. Ваш.mdf теперь подключен к серверу sql.Теперь, когда ваш
.mdf
находится на сервере SQL, у нас все еще есть проблема с доступом к нему. Эту проблему можно решить, открыв порт на вашем компьютере, чтобы разрешить доступ к серверу sql. Я следовал этому руководству, чтобы это сделать: https://docs.microsoft.com/en-us/sql/relational-databases/lesson-2-connecting-from-another-computer?view=sql-server-2017, Как только вы закончите это руководство, ваш сервер sql должен быть открыт для доступа. Теперь могут быть более простые способы доступа к серверу SQL на локальном компьютере, но хорошая особенность этого метода заключается в том, что он также должен работать, если вы также хотите читать сервер SQL с удаленного компьютера. Все, что вам нужно сделать, это изменить IP-адрес в нашей строке подключения (ниже).
Теперь, когда у нас есть доступный экземпляр сервера SQL и наши .mdf
файл в качестве базы данных внутри него, мы можем прочитать файл, как и любую другую базу данных из панд. Я использовал следующую настройку, чтобы теперь прочитать мой .mdf
файл.
# MS SQL Server Config
server = '127.0.0.1' # mssql is set up on localhost
port = '1433' # the port I opened to access mssql
database = 'database_name'
username = 'username'
password = 'password'
driver = 'SQL+SERVER'
schema = 'dbo'
# create a sqlAlchemy engine with the above credentials
connection_str = f'mssql+pyodbc://{server}:{port}/{database}?driver={driver}'
engine = create_engine(connection_str)
# read our mdf file!
query = 'select * from table_name;'
df = pd.read_sql(query, engine)
Теперь у меня нет защищенного паролем сервера sql, так как я работаю только локально, но если у вас есть ваш, вы можете настроить строку подключения следующим образом:
connection_str = f'mssql+pyodbc://{username}:{password}@{server}:{port}/{database}?driver={driver}'
Теперь вы должны иметь table_name
от твоего .mdf
файл читается в панде.