Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将SQL行导出到多个文本文件并命名它们_Sql_Sqlite_Export_Naming - Fatal编程技术网

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

将SQL行导出到多个文本文件并命名它们,sql,sqlite,export,naming,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... 我想为每行创建以下文本文件: fil

我有一个包含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; 内容=标题

filename=id-title.txt; 内容=文本

filename=id-title.txt; 内容=文本2

我看了,想不出怎么做。我曾在Excel中使用宏将单元格转换为txt,但文本太大,无法满足Excel的单元格字符限制

我使用的是SQLite,但我并不执着于它,如果可以避免的话,我宁愿不买程序

有什么建议吗?虽然不太技术化,但我可以遵循一些基本代码

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

打开带有fx图标的自定义SQL函数编辑器并添加新函数,我们称之为saveToFile。选择Tcl作为实现语言,它位于右上角,将类型保留为标量。如果您想定义输入参数,那么它不是强制性的,只是为了让代码助手在以后调用这个函数时帮助您:fileName和contents。在所有数据库中保留“注册”选项也可以

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

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;
此查询将为每行创建一个文件,并将标题、文本和文本列作为文件中的三行


当没有问题或错误时,查询将返回每一行的状态ok:。。。出现问题时显示错误详细信息,例如创建文件。

您的意思是,对于每一行,您希望创建相同的文件3次,但内容不同。你能说得更准确些吗?这些不是应该是3个不同的文件吗?或者它是一个包含3行内容的文件?谢谢!你说得对,这是3个不同的文件,内容不同。这段代码对我很有用,我修改了SQL编辑器查询,使其只在内容中包含标题,它就起作用了。制作文件时,它不喜欢标题中的奇怪字符,例如“/”,所以我只是告诉它对其进行URL编码,然后在创建后重命名文件。虽然不漂亮,但能胜任。