将 sqlite 导出到 csv

2023-11-21

我试图从我的 sqlite 数据库中获取数据并将其写入 csv 文件,并在完成写入后通过电子邮件发送信息。我的数据库中只有一个包含 3 列的表。我有 DBAdapter 和一个具有用户必须按下的按钮的类以便能够导出数据。

这是我尝试过的代码导出数据.java

try {
    root = Environment.getExternalStorageDirectory();                   
    Log.i(TAG,"path.." +root.getAbsolutePath());  

    //check sdcard permission  
    if (root.canWrite()) {  
        File fileDir = new File(root.getAbsolutePath()+"/fun/");  
        fileDir.mkdirs();  

        //   Log.d("DATABASE", db.getAllBYname());

        File file= new File(fileDir, "itisfun.csv");  
        FileWriter filewriter = new FileWriter(file);  
        BufferedWriter out = new BufferedWriter(filewriter);  
        out.write("I m enjoying......dude..............."  ); 
        out.close();  
    }  
} catch (IOException e) {  
    Log.e("ERROR:---", "Could not write file to SDCard" + e.getMessage());  
} 

这段代码确实在SD卡中创建了文件,但问题是我无法让它获取sqlite数据库数据并将其写入文件中,如代码所示。我卡住了,请帮助我举例或使用正确的解决方案编辑我的代码。


我使用此例程将 SQLite 数据库以 CSV 格式转储到 SD 卡上的文件中:

private Boolean backupDatabaseCSV(String outFileName) {
    MyLog.d(TAG, "backupDatabaseCSV");
    Boolean returnCode = false;
    int i = 0;
    String csvHeader = "";
    String csvValues = "";
    for (i = 0; i < GC.CURCOND_COLUMN_NAMES.length; i++) {
        if (csvHeader.length() > 0) {
            csvHeader += ",";
        }
        csvHeader += "\"" + GC.CURCOND_COLUMN_NAMES[i] + "\"";
    }

    csvHeader += "\n";
    MyLog.d(TAG, "header=" + csvHeader);
    dbAdapter.open();
    try {
        File outFile = new File(outFileName);
        FileWriter fileWriter = new FileWriter(outFile);
        BufferedWriter out = new BufferedWriter(fileWriter);
        Cursor cursor = dbAdapter.getAllRows();
        if (cursor != null) {
            out.write(csvHeader);
            while (cursor.moveToNext()) {
                csvValues = Long.toString(cursor.getLong(0)) + ",";
                csvValues += Double.toString(cursor.getDouble(1))
                        + ",";
                csvValues += Double.toString(cursor.getDouble(2))
                        + ",";
                csvValues += "\"" + cursor.getString(3) + "\",";
                csvValues += Double.toString(cursor.getDouble(4))
                        + ",";
                csvValues += Double.toString(cursor.getDouble(5))
                        + ",";
                csvValues += "\"" + cursor.getString(6) + "\",";
                csvValues += Double.toString(cursor.getDouble(7))
                        + ",";
                csvValues += Double.toString(cursor.getDouble(8))
                        + ",";
                csvValues += Double.toString(cursor.getDouble(9))
                        + "\n";
                out.write(csvValues);
            }
            cursor.close();
        }
        out.close();
        returnCode = true;
    } catch (IOException e) {
        returnCode = false;
        MyLog.d(TAG, "IOException: " + e.getMessage());
    }
    dbAdapter.close();
    return returnCode;
}

GC 是我的全局常量类,其中包含表列名称。列名称用于制作 CSV 文件中的标题行。 getAllRows 位于数据库适配器中,返回表中的所有行。 while 转储所有返回的行。长值以逗号分隔,文本值用引号引起来并用逗号分隔。 MyLog.d 在测试模式下执行 Log.d,而在生产模式下则不执行任何操作。 dbAdapter 在函数外部定义为全局变量:

DatabaseAdapter dbAdapter = null;

它在 onCreate 中初始化为:

dbAdapter = new DatabaseAdapter(getApplicationContext());

dbAdapter 在活动中的多个函数中使用。如果全局定义数据库适配器,请确保每次使用时将每个 dbAdapter.open() 与 dbAdapter.close() 配对。另外,不要忘记关闭打开的每个光标。

注意:csvValues 是每个 SQLite 行中返回的列的串联。对于 SQLite 游标中返回的每一行,csvValues 将作为行写入 CSV 表中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 sqlite 导出到 csv 的相关文章

随机推荐

  • 在 iPhone 的 linphone 中启用 G729 编解码器

    我遇到了启用 G729 编解码器的问题 目前我正在使用 linphone 库从 iPhone 拨打 sip 电话 我需要使用 g729 编解码器 谁能知道我该怎么做 请分享您对此的宝贵知识 假设您能够编译 SDK 和 linphone XC
  • Apache HTTP 客户端,POST 请求。如何正确设置请求参数?

    我正在使用 Apache HTTP 客户端 我需要向我的 servlet 发送 POST 请求 当请求发送时 我的 servlet 没有收到任何参数 在HttpServletRequest 下面是客户端程序代码 Engage the HTT
  • 将带有嵌套括号的字符串转换为嵌套列表,python

    Stack Overflow 上还有其他涉及此问题的问题 例如如何解析字符串并返回嵌套数组 但它们都引用以下格式的列表 abc de fg 转到表格 a b c d e f g 我有一个表格的列表 wordOneWord2 OtherWor
  • 关闭 Pattern::patv 安全吗?

    默认情况下数学如果我对两者使用相同的名称 则会抛出警告消息Blank and BlankSequence模式 f x x g x Pattern patv Name x used for both fixed and variable le
  • 使用 PHP 导出 XLS 文件时 Google Chrome 出现错误

    我一直在使用 PHP 脚本将数据从数据库 mysql 导出到 XLS 文件 文件导出过程在 Firefox 和 IE 上运行良好 我在尝试使用 Google Chrome 导出时遇到错误 谷歌浏览器的错误是 Duplicate header
  • 如何导出交互式 rgl 3D 图以共享或发布?

    我使用 rgl 包在 R 中制作了交互式 3D 绘图 我希望能够将其发送 并保持交互 给同事 以便她可以在笔记本电脑上的会议中展示 旋转 有没有办法做到这一点 这是我用来生成绘图的代码 这是情节 library rgl plot3d pca
  • java、xsd 和编组:jre bug,我的错还是 xsd 问题?

    我遇到了问题编组将 JAXB 模型树转换为 xml 文件 我使用创建了这些模型类xjc 我无法修改这些 xml 架构 它们是外部定义的 类似于this缺乏答案的问题 根据 xjc 和其他 xml 工具 xml 模式文件似乎是有效的 我问是否
  • ASP.NET 回发会导致 URL 重写出现问题吗?

    我在我的 asp net 项目中使用 Intelligencia 进行 url 重写 我通过进行 URL 重写的研发解决了许多问题 但现在我遇到了一个有关页面回发的问题 页面回发将我的重写网址更改为原始网址 所以 谁能帮我离开这里 您可以在
  • MongoDB:如何查找忽略区分大小写、重音符号和百分比逻辑(%)的文档

    我想对我的 mongodb 数据库中的集合进行搜索 在我的收藏中 我有带有 名称 字段的文档 可以是如下值 i 瓜纳巴拉宫 城市宫 节日宫 等 当用户键入诸如 pala 或 pal 或 Pala 或 Pal 之类的搜索时 i 中的所有这些项
  • 如何格式化具有给定精度和零填充的浮点数?

    我已经看过几十个类似的问题 我很高兴得到另一个答案的链接 但我想在 python 3 3 中对浮点数进行零填充 n 2 02 print format n desired output 002 0200 浮点数的精度很容易 但我也无法获得零
  • 将 optgroup 标签显示为初始选项 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 是否可以在选择下拉列表中将
  • 如何在 Groovy 中同时使用 GroupBy 和 Sum?

    我有一个这样的集合 patient1 value1 patient2 value2 例如 x 1 20 28 1 11 11 2 4 60 2 3 68 I use countBy获取每个患者的计数 def counts x countBy
  • 如何修复 nginx 入口的“无法确保负载均衡器”错误

    在 Azure 上使用 helm 和静态 IP 设置新 的 nginx ingress 时 nginx 控制器永远不会分配静态 IP 它总是说
  • Spring AOP:从切入点中排除避免最终类和枚举

    我正在尝试使用 Spring AOP 来实现日志记录 我已经定义了 Pointcut execution com mycom private void framework Around framework public Object aro
  • 无法使用经过训练的 Tensorflow 模型

    我是深度学习和 Tensorflow 的新手 我将预训练的张量流 inceptionv3 模型重新训练为保存的模型 pb识别不同类型的图像 但是当我尝试使用以下代码的 fie 时 with tf Session as sess with t
  • 从 powershell 启动非阻塞进程

    我正在编写一个 powershell 脚本 需要同时将代码推送到多个 git 存储库 这是我迄今为止的脚本 param parameter Mandatory true string repoPath parameter Mandatory
  • 仅使用键盘导航 UI

    我正在尝试仅使用键盘浏览记录列表 当页面加载时 默认的 焦点 应该在第一条记录上 当用户单击键盘上的向下箭头时 需要聚焦下一条记录 当用户单击向上箭头时 应聚焦前一条记录 当用户单击 Enter 按钮时 应该将他们带到该记录的详细信息页面
  • Typeahead 将结果显示为未定义

    我正在尝试使用 typeahead 显示谷歌建议 Ajax 调用工作正常并且数据正确返回 执行前返回过程 数据 data 包含以 w 开头的字符串数组 data 沃尔玛 天气 富国银行 worldstarhiphop 沃尔格林 维基百科 白
  • Node js 请求实体太大,且无法上传 multer

    好吧 我尝试了不同的方法来上传 200k 文件 增加了限制 更改了参数 做了所有更改了 multer 的操作 Fucei 我知道我在堆栈中读到的所有内容 我在谷歌上发现基本的谷歌搜索已经完成了我的问题 而不是向上而是向下的图片就像魅力一样
  • 将 sqlite 导出到 csv

    我试图从我的 sqlite 数据库中获取数据并将其写入 csv 文件 并在完成写入后通过电子邮件发送信息 我的数据库中只有一个包含 3 列的表 我有 DBAdapter 和一个具有用户必须按下的按钮的类以便能够导出数据 这是我尝试过的代码导