将SQL行导出到多个文本文件并命名它们

时间:2015-02-11 21:44:09

标签: sql sqlite export naming

我有一个包含6列和数千行的数据库,我想将内容导出到单独的命名文本文件中。

id  title   text                text_2
1   blah    lorem ipsem...      indigo violet...
2   gunf    ipsem lorem...      up down left...
3   faff    sir I have a...     amarillo albuquerque...

我想为每一行创建以下文本文件:

filename = id - title.txt; content = title

filename = id - title.txt; content = text

filename = id - title.txt; content = text_2

我看了,想不到怎么做。我以前在Excel中使用宏来将单元格转换为txt,但文本对于Excel的单元格字符限制来说太大了。

我正在使用SQLite,但我并不喜欢它(如果我能避免的话,宁愿不必购买程序)。

有关该怎么做的任何建议?虽然不太技术,但我可以遵循一些基本代码。

1 个答案:

答案 0 :(得分:0)

您可以使用SQLiteStudio 3.x.x及其自定义SQL函数。

打开"自定义SQL函数编辑器" (带有" fx"图标的那个)并添加新功能,让我们称之为saveToFile。选择Tcl作为实施语言(位于右上角),离开"输入"为Scalar。如果你想要,你可以定义输入参数(它不是强制性的,它只是让代码助手在以后调用这个函数时会帮助你):fileNamecontents。保持"注册所有数据库"也可以。选项。

现在最重要的事情 - 输入以下实施代码:

if {[catch {
  lassign $argv fileName contents
  set fd [open "C:/tmp/a/$fileName" a+]
  puts $fd $contents
  close $fd
} res]} {
  return "error: $res"
} else {
  return "ok"
}

代码包含C:/tmp/a,它是创建文件的目录路径。将其更改为您想要的任何内容。该目录必须存在。

提交你的功能(提交按钮位于功能编辑器之上)。

现在打开SQL编辑器窗口(带有空白纸和铅笔的窗口)并输入如下查询:

SELECT saveToFile(id || ' - ' || title || '.txt', title || x'0a' || text || x'0a' || text_2) AS result FROM table_name;

此查询将在每行创建一个文件,并将titletexttext_2列作为文件中的3个单独行。

当没有问题时,查询将返回每个行状态ok,或者当出现问题时,error: ...会返回错误详细信息,例如创建文件。