2015-02-11 39 views
0

我有一个数据库有6列和几千行,我想将这些内容导出到单独的命名文本文件中。将SQL行导出到多个文本文件并命名它们

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... 

我想创建的每一行下面的文本文件:

名= ID - title.txt; content = title

filename = id - title.txt; content = text

filename = id - title.txt; content = text_2

我看了一下,不知道该怎么做。我曾经在Excel中使用宏来将单元格转换为txt,但文本太大而无法使用Excel的单元格字符限制。我正在使用SQLite,但我没有与它结合(尽管宁愿不必购买一个程序,如果我可以避免它)。

任何建议怎么办?虽然不是太棘手,我可以遵循一些基本的代码。

+0

你在说每行你想创建同一个文件3次,但内容不同。你能更精确吗?这些假设是不是3个不同的文件?或者它是3行内容的单个文件? – Googie 2015-02-12 09:57:24

回答

0

您可以使用SQLiteStudio 3.x.x,它是自定义的SQL函数。

打开“自定义SQL函数编辑器”(带有“fx”图标的编辑器)并添加新函数,我们将其称为saveToFile。选择Tcl作为实现语言(位于右上角),将“Type”保留为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: ...与错误的详细信息出现问题时,例如创建一个文件。

+0

谢谢!你是对的,它是3个不同内容的文件。代码为我工作,我调整了SQL编辑器查询,只是在内容中包含标题,它的工作。IT在制作文件时不喜欢标题中的奇怪字符(例如'/'),所以我只是告诉它将URL编码,然后重命名文件。不漂亮,但完成这项工作。 – JRUK 2015-02-13 22:22:13

相关问题