Я неохотно отвечу на свой вопрос, используя вход из + bnord и + chinsoon12 (кто оба сделал кусочки головоломки).
Короткий ответ: нет решения из коробки. Как примечания + bnord, было бы желательно исправить его на стороне сервера (например, экспортируя в формат CSV с помощью mysqldump). Однако, как указывал мой вопрос, я ищу решение, которое позволяет мне работать с дампом sql, минуя сервер.
Итак, если нам нужно работать с дампом, как? Hardcore, ручной способ - использовать регулярные выражения для преобразования INSERT
в CSV, либо (1) вне R, используя sed
и awk
в текстовом файле .sql (+ bnord), либо (2) внутри R с grep
и gsub
в строках, загруженных с помощью readLines
(+ chinsoon12).
Некоторая хорошая душа написала скрипт python, который может конвертировать sql-дампы в CSV . Для этого требуется еще один кусок (потенциально нетривиальный для установки / поддержки) программного обеспечения, поэтому это не тот ответ, на который я надеялся, но он выглядит как хорошая модель, если кто-то хочет изобрести колесо в R.
На данный момент я придерживаюсь своего modus operandi (в Windows), на котором запущен MySQL Community Server, и используя WorkBench для импорта дампа, а затем поговорите с локальным сервером из R. Очень косвенный метод, который является болью в из-за непостижимой системы прав доступа MySQL (особенно раздражает, так как все это просто в текстовом файле ASCII), но единственный способ пока, похоже. Спасибо всем за ваш вклад!
(Если получится лучший, более полный ответ, я с радостью соглашусь с этим, если это возможно).
Можно использовать библиотека Chilkat. Это является коммерческим, но имеет бесплатную оценку и кажется довольно хорошим.
Вот пример, который я получил от здесь :
import chilkat
# Demonstrates how to create a WinZip-compatible 128-bit AES strong encrypted zip
zip = chilkat.CkZip()
zip.UnlockComponent("anything for 30-day trial")
zip.NewZip("strongEncrypted.zip")
# Set the Encryption property = 4, which indicates WinZip compatible AES encryption.
zip.put_Encryption(4)
# The key length can be 128, 192, or 256.
zip.put_EncryptKeyLength(128)
zip.SetPassword("secret")
zip.AppendFiles("exampleData/*",True)
zip.WriteZip()
pyminizip
работает отлично в создании защищенного паролем zip-файла. Для того, чтобы разархивировать, это перестало работать в некоторых ситуациях. Протестированный на Python 3.7.3
Здесь, я использовал pyminizip для шифрования файла.
import pyminizip
compression_level = 5 # 1-9
pyminizip.compress("src.txt",'src', "dst.zip", "password", compression_level)
Для разархивировали, я использовал модуль zip-файла:
from zipfile import ZipFile
with ZipFile('/home/paulsteven/dst.zip') as zf:
zf.extractall(pwd=b'password')