0

将 R 2.13.0 与 Window XP 32b 一起使用,

我正在努力正确定义一个我想在 R 中构建并从 RODBC 包发送到 sqlQuery 的查询。

我在向查询中添加文件路径时遇到问题。

遵循有关如何处理字符串中的反斜杠的建议,这是我可以编写但会导致错误的查询。

以下在 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"

在访问中工作正常。

它的翻译:

>   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\" "

导致错误。

您能在翻译过程中提供帮助吗?

最好的问候帕斯卡

4

1 回答 1

2

由于您引入的换行符,您的 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包含 a \n
  • '我发现在字符串中嵌入引号时使用单引号更容易。(这还有一个好处是您不必转义引号。)
于 2011-06-24T15:34:02.170 回答