est-il possible d'effectuer une insertion en vrac dans un serveur MS-SQL (2000, 2005, 2008) à l'aide du paquet Rodbc? P>
Je sais que je peux le faire à l'aide de FreebCP, mais je suis curieux si le paquet Rodbc implémente cette partie de l'API Microsoft SQL et, sinon, à quel point il serait difficile de le mettre en œuvre. P>
6 Réponses :
Vous recherchez probablement ? SQLSAVE Code>
qui utilise un insert paramétré dans la requête code> (en tenant dans une seule opération) lorsque vous définissez
rapide = true code>. p>.
Nah, SQLSave fera plusieurs inserts. Je veux un insert en vrac qui est une seule transaction.
Est-ce que Fast = TRUE ne le fait-il pas comme une seule transaction?
des documents Rodbc: "logique. Si false, écrivez des données une ligne à la fois. Si true, utilisez une insertion paramétralisée dans ou mettez à jour la requête pour écrire toutes les données en une seule opération." .. Cependant, cela ne semble pas faire toute différence (lors de la rédaction de Netezza dans mon cas)
J'ai peur dans mon expérience de mon expérience rapide = t ou rapide = f ne change pas une chose. Les enregistrements sont insérés un par un quel que soit quoi. Au moins dans mon cas avec SQL Server 2012.
Pour moi, rapide = true, rend la fonction SQLSave ~ 3 fois plus rapide. Aussi sur SQL Server 2012.
Maintenant, vous pouvez utiliser Un scénario typique: p> Ceci suppose que votre table est déjà créée dans la base de données: p> dbbulkcopy code> à partir du nouveau package RSQLServer :
dbbulkcopy code> pour lire FIL et insérez-le à l'aide de
BCP code> BCP de MS SQL Server. LI>
ol>
Toute raison pour laquelle RsqlServer n'est pas sur le cran?
@Musx Parce qu'il est en cours de développement (spécialement documentaire et des tests) et utilise un package rclr code> qui n'est pas sur le cran aussi. Mais vous êtes encouragé à l'utiliser de GitHub et sera satisfait de tout retour d'information.
De tout ce que je peux trouver, il n'y a pas de solution pour Insert en vrac à MySQL et rien qui fonctionne avec SSIS, c'est pourquoi Microsoft incluant la base de données Analytics avec SQL Server 2016 après avoir acheté Revolution R Analytics. P>
J'ai essayé de commenter la réponse précédente mais je n'ai pas la réputation de le faire. P>
Le fichier Considérant que le package rsqlserver code> doit exécuter avec
rclr code> et aucun de ces packages ne se comporte bien, notamment parce que les fonctions d'insertion code> SSQLServer de code> mauvaise manipulation de type de données. Donc, si vous l'utilisez, vous n'aurez aucune idée de ce que vous regardez dans la table SQL autant d'informations de votre data.frame aura été transformée. P>
Rodbc code> existe depuis 15 ans, je suis assez déçu que personne n'a créé une fonction d'insertion en vrac ... P>
Point important sur RsqlServer, mais pour beaucoup d'entre nous, nous n'avons pas besoin de «regarder» les données (d'un point de vue r). Si cela a été modélisé et façonné et traité dans R, nous avons juste besoin du résultat dans la base de données et cela ne comporte pas ce que R transforme le type dans la base de données (tant qu'ils sont raisonnables et peuvent être lus par d'autres systèmes)
@Joe Je ne pense pas que je n'engagerais jamais quelqu'un qui dit "nous n'avons pas besoin de" regarder "les données".
Notre Vous pouvez trouver le paquet sur https://github.com/inbo-natura2000/n2khelper p>
Installez-le avec N2KHelper code> peut utiliser
BCP code> (BulkCopy) lorsqu'il est disponible. Lorsqu'il n'est pas disponible, il redevient à plusieurs instructions d'insertion. P>
devtools :: installe_git ("inbo-natura2000 / n2khelper") CODE> et recherchez le
odbc_insert () code> fonction. p>
Consultez le nouveau ODBC code> et
dbi code> paquets.
DBI :: DBWRITETABLETABLE CODE> Ecrit environ 20 000 enregistrements par seconde ... beaucoup plus vite que les inserts de ligne de
Rodbc :: sqlsave () code> p> p> P>
Je ne peux pas installer ODBC code>, il génère une erreur:
Erreur: le chargement paresseux a échoué pour le package 'blob' code>
Cela ressemble à cela nécessite une question différente
Utilisation de Rodbc, l'insert le plus rapide que nous ayons été en mesure de créer (260 millions d'insertions de rangées) ressemble à ce qui suit (en code PSeudo): si vous exécutez ceci De l'entre les serveurs, vous avez besoin d'un lecteur réseau que le serveur R puisse écrire sur (par exemple, un serveur avec des autorisations pour écrire sur la DB utilise le RScript pour la fabrication du code) et le serveur SQL peut lire. P> P> P> P> P> P> P> P> P> >