当前位置: 首页 > 知识库问答 >
问题:

使用SQLalchemy for PostgreSQL消除双引号

李奕
2023-03-14

我试图导入200 SAS XPT文件到我的PostgreSQL数据库:

engine = create_engine('postgresql://user:pwd@server:5432/dbName')
for file in listdir(dataPath):
    name, ext = file.split('.', 1)
    with open(join(dataPath, file), 'rb') as f:
        xport.to_dataframe(f).to_sql(name, engine, schema='schemaName', if_exists='replace', index=False)
    print("Successfully wrote ", file, " to database.")

但是,生成的SQL对所有标识符都有双引号,例如:CREATE TABLE"Y2009"。"ACQ_F("SEQN"FLOAT(53),"ACD010A"FLOAT(53));.问题是,如果列/表/模式是用引号创建的,每次我需要查询它们时,我必须包括引号,同时使用精确的大小写。

我想去掉引号,但我自己无法编写自定义SQL,因为这些文件的结构都非常不同。

共有1个答案

贡威
2023-03-14

PostgreSQL要求引用大写的表/列名(参考)。这就是为什么会引用SQLalchemy构造的SQL中的标识符。为了避免这种情况,请将dataframe的列名转换为所有小写:

with open(join(dataPath, file), 'rb') as f:
     data = xport.to_dataframe(f)
     data.columns = map(str.lower, data.columns)
     data.to_sql(name.lower(), engine, schema='y2007')
 类似资料:
  • 问题内容: 我想删除我的json_encode中的双引号,即我的代码: 我的结果是: 我也想删除“ id_posiciones”和“ device_version”的双引号。 我该怎么做的结果是: 问题答案: 如果最后在您的正则表达式中添加下划线,它将执行此操作。 我认为那正是preg_replace的目的。

  • 问题内容: 我想使用程序包执行Windows命令,但是Windows进行了一些奇怪的转义。 我有类似的东西: “SomeText” 但这会引发错误,因为Windows会将其转换为 有人知道为什么吗?如何使用exec程序包在Windows上执行? 谢谢! 问题答案: OK,这是一个比较复杂一点比你预期,但有 是 一个解决方案: 不幸的是,尽管在2011年添加了对此功能的支持,但它似乎尚未纳入文档中。

  • 问题内容: 请检查以下代码。 该变量是一个包含指向我的图像文件夹(上载)的链接的变量,并且在该文件夹中,我还有一些其他文件夹,这些文件夹以我的用户名命名。例如:我有一个名为john的用户,因此链接应该看起来像this-> 。 主要思想是,当任何用户登录并浏览其图片库时,我都希望将他带到自己的画廊,该画廊基本上以他的名字命名。 当他访问画廊时,链接中的值将来自用户的登录名(来自会话)。现在的问题是,

  • 请检查以下代码。 是一个变量,它包含一个指向我的图像文件夹(上传)的链接,在文件夹中,我有一些其他文件夹,它们以我的用户名命名。例如:我有一个用户的名字是约翰,所以链接应该是这样的- 主要的想法是,当任何用户登录并浏览他的图片库时,我想把他带到他自己的图片库,这个图片库基本上是以他的名字命名的。 当他访问多媒体资料时,链接中的值将来自用户的登录名(来自会话)。现在的问题是,您可能已经了解到,在上述

  • 我正在使用XSLT1.0和XML。我对这些主题是新手,但我一直在阅读并尝试如何将XSLT应用于XML。现在,我给出了一个需要从XML元素中筛选出无效字段的项目。java Transformer类用于在XML上应用XSLT。java代码类似于oracle教程中“编写XSLT转换”一节。我已经添加了下面的xml和xsl,并运行教程页面中描述的代码。我的目标是提取单引号和双引号以及以下字符 XML文件

  • 问题内容: 这是我的Json代码的示例: 如果我在程序中打印出该属性,则会得到以下输出: 如您所见,它保留了双引号。 有什么办法可以避免这种情况吗? 我的完整代码: java代码将其打印出来: 我的完整Java代码 我的Java程序的输出: 问题答案: 它的文档记录不正确,但是会为您提供一个表示JSON元素的字符串,并且适合于重新创建JSON序列化。你想要的是。如果您不查看字符串,这将引发错误,但