R ODBC SQL-запрос с именем пути к файлу (например, для INSERT INTO ... IN ...) - PullRequest
0 голосов
/ 24 июня 2011

Используя R 2.13.0 с Window XP 32b,

Я изо всех сил стараюсь правильно определить запрос, который я хотел бы встроить в R и отправить в sqlQuery из пакета RODBC.

У меня проблема с добавлением пути к файлу в запросе.

Следуя советам по работе с обратной косой чертой в строках, вот запрос, который я могу написать, но который приводит к ошибке.

В Access хорошо работает:

    SELECT Tamis_Lavage.* 
    FROM  Tamis_Lavage
    IN  "d:\Mes Documents\Pascal\03 - BiomFix\99 - Suivi Etude\01 - Donnees\Données STH\Test_Import\Copie de 20110623Acquisition.mdb"

нормально работает в Access.

его перевод:

>   MyQuery <- paste(" 
+    SELECT Tamis_Lavage.* 
+    FROM Tamis_Lavage
+    IN \"d:\\Mes Documents\\Pascal\\03 - BiomFix\\99 - Suivi Etude\\01 - Donnees\\Données STH\\Test_Import\\Copie de 20110623Acquisition.mdb\" "
+     , sep="")
>   
>   tmp <- sqlQuery(con, query=MyQuery)
>   tmp       
[1] "42000 -1002 [Microsoft][Pilote ODBC Microsoft Access] Le moteur de base de données ne peut pas trouver '[d:\\Mes Documents\\Pascal\\03 - BiomFix\\99 - Suivi Etude\\01 - Donnees\\Données STH\\Test_Import\\Copie de 20110623Acquisition.mdb]'. Assurez-vous que le nom de paramètre ou d'alias est valide, qu'il ne comprend pas de caractère ou de ponctuation incorrect et qu'il n'est pas trop long."
[2] "[RODBC] ERROR: Could not SQLExecDirect ' SELECT Tamis_Lavage.* \n   FROM Tamis_Lavage\n   IN \"d:\\Mes Documents\\Pascal\\03 - BiomFix\\99 - Suivi Etude\\01 - Donnees\\Données STH\\Test_Import\\Copie de 20110623Acquisition.mdb\" '"                                                                                                                                                                  
>   MyQuery 
[1] " \n SELECT Tamis_Lavage.* \n   FROM Tamis_Lavage\n   IN \"d:\\Mes Documents\\Pascal\\03 - BiomFix\\99 - Suivi Etude\\01 - Donnees\\Données STH\\Test_Import\\Copie de 20110623Acquisition.mdb\" "

приводит к ошибке.

Не могли бы вы помочь в процессе перевода?

С уважением Паскаль

1 Ответ

2 голосов
/ 24 июня 2011

Ваш MyQuery может быть проблематичным из-за введенных вами новых строк \n.

Попробуйте выполнить следующее:

MyQuery <- paste(
    "SELECT Tamis_Lavage.*", 
    "FROM Tamis_Lavage",
    "IN 'd:\\Mes Documents\\Pascal\\03 - BiomFix\\99 - Suivi Etude\\01 - Donnees\\Données STH\\Test_Import\\Copie de 20110623Acquisition.mdb'")

Чем отличается?* Ни один из параметров paste не содержит \n.

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