Rya*_*ton 10 python sql postgresql pgadmin
我在这个网站上看了很多问题并且找不到问题的答案:如何在多个CSV源文件中创建数据库中的多个新表(在我的情况下我使用的是PostgreSQL),其中新的数据库表列准确反映CSV列中的数据?
我可以编写CREATE TABLE语法,我可以读取CSV文件的行/值,但是是否已经存在检查CSV文件并准确确定列类型的方法?在我建立自己之前,我想检查一下是否已存在.
如果它不存在,我的想法是使用Python,CSV模块和psycopg2模块来构建一个python脚本,它将:
这样的工具是否已经存在于SQL,PostgreSQL,Python中,或者我应该使用另一个应用程序来实现这一点(类似于pgAdmin3)?
小智 5
我一直在处理类似的事情,最后通过检查源文件编写自己的模块来嗅探数据类型.所有反对者都有一些智慧,但也有理由这样做,特别是当我们对输入数据格式没有任何控制时(例如使用政府公开数据),所以这里有一些我学到的东西进行中:
如果你可以避免必须进行自动类型检测,那么值得避免它,但这并不总是实用的,所以我希望这些技巧有所帮助.
小智 1
看来你需要预先了解结构。只需阅读第一行即可知道您有多少列。
CSV 不携带任何类型信息,因此必须从数据上下文中推断出。
改进之前稍微错误的答案,您可以创建一个包含 x 个文本列的临时表,用数据填充它,然后处理数据。
BEGIN;
CREATE TEMPORARY TABLE foo(a TEXT, b TEXT, c TEXT, ...) ON COMMIT DROP;
COPY foo FROM 'file.csv' WITH CSV;
<do the work>
END;
Run Code Online (Sandbox Code Playgroud)
警告一下,该文件需要可由 postgresql 进程本身访问。这会产生一些安全问题。另一种选择是通过 STDIN 提供它。
华泰