【问题标题】:SQLite: How do I save the result of a query as a CSV file?SQLite:如何将查询结果保存为 CSV 文件?
【发布时间】:2011-08-29 22:30:26
【问题描述】:

我是 SQLite 的新手。有没有办法可以将查询结果导出到 CSV 文件中?

【问题讨论】:

标签: sqlite csv


【解决方案1】:

来自here和d5e5的评论:

您必须将输出切换到 csv 模式并切换到文件输出。

sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout

【讨论】:

  • 这个文件保存在哪里?
  • 它被打印到标准输出,也就是你的屏幕。将输出保存在文件中: sqlite> .output test.csv 将打印结果恢复到屏幕: sqlite> .output stdout
  • 关于我可以在哪里找到如何使用 Node 库执行此操作的指针?
  • 使用 sqlite> .output C:/Users/jdoe/Documents/output.csv 如果你想使用特定的路径。
  • 嗨!我这样做了。尽管我的查询运行良好,但文件输出为空。有人知道为什么吗?
【解决方案2】:

来自 gdw2 和 d5e5 的好答案。为了简单起见,这里将建议汇总在一系列命令中:

sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout

【讨论】:

    【解决方案3】:

    要在 csv 文件中包含列名,您可以执行以下操作:

    sqlite> .headers on
    sqlite> .mode csv
    sqlite> .output test.csv
    sqlite> select * from tbl1;
    sqlite> .output stdout
    

    要验证您所做的更改,您可以运行以下命令:

    sqlite> .show
    

    输出:

    echo: off   
    explain: off   
    headers: on   
    mode: csv   
    nullvalue: ""  
    output: stdout  
    separator: "|"   
    stats: off   
    width: 22 18 
    

    【讨论】:

    • 感谢您展示如何获取列名!这个答案需要更高。
    • 请注意,sqlite3 将输出附加到文件末尾,而不会删除以前的内容。
    • 但是每个.output filename.csv 执行都会创建或删除文件。
    【解决方案4】:

    除了上述答案之外,您还可以使用.once.output 类似的方式。这只输出下一个查询到指定的文件,这样你就不必跟着.output stdout

    所以在上面的例子中

    .mode csv
    .headers on
    .once test.csv
    select * from tbl1;
    

    【讨论】:

      【解决方案5】:

      或者你可以在一行中完成(在win10中测试)

      sqlite3 -help
      sqlite3 -header -csv db.sqlite 'select * from tbl1;' > test.csv
      

      奖励:将 powershell 与 cmdlet 和管道 (|) 结合使用。

      get-content query.sql | sqlite3 -header -csv db.sqlite > test.csv
      

      其中 query.sql 是包含您的 SQL 查询的文件

      【讨论】:

        【解决方案6】:

        所有现有答案只能在 sqlite 命令行中使用,如果您想构建可重用的脚本,这并不理想。 Python 使构建可以以编程方式执行的脚本变得容易。

        import pandas as pd
        import sqlite3
        
        conn = sqlite3.connect('your_cool_database.sqlite')
        
        df = pd.read_sql('SELECT * from orders', conn)
        df.to_csv('orders.csv', index = False)
        

        您可以自定义查询以仅将部分 sqlite 表导出到 CSV 文件。

        您还可以运行单个命令将所有 sqlite 表导出为 CSV 文件:

        for table in c.execute("SELECT name FROM sqlite_master WHERE type='table';").fetchall():
            t = table[0]
            df = pd.read_sql('SELECT * from ' + t, conn)
            df.to_csv(t + '_one_command.csv', index = False)
        

        请参阅here 了解更多信息。

        【讨论】:

          猜你喜欢
          • 2014-02-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-30
          • 2017-10-04
          • 1970-01-01
          • 2016-04-18
          • 1970-01-01
          相关资源
          最近更新 更多