在文件名与表名不同的地方使用 mysqlimport
Posted
技术标签:
【中文标题】在文件名与表名不同的地方使用 mysqlimport【英文标题】:Using mysqlimport where the filename is different from the table name 【发布时间】:2011-01-31 07:14:19 【问题描述】:我一直在使用 mysqlimport,但遇到了文件名必须与表名相同的限制。有没有办法解决这个问题?
我无法重命名该文件,因为它被其他进程使用,我不想复制该文件,因为其中会有很多,有些非常大。
我想使用 mysqlimport 而不是 LOAD INFILE。
编辑:不幸的是,这需要在 Windows 上运行,所以恐怕没有符号链接的技巧。
【问题讨论】:
为什么不想使用LOAD DATA INFILE
,它与mysqlimport 的作用相同,并且它允许您为给定的输入文件指定不同的表名?
我正在使用 Java/JDBC 并且在某些情况下加载文件出现问题时调用 LOAD INFILE 似乎不会产生任何错误。如果您通过 Workbench 运行它,则会显示警告,但 JDBC 驱动程序没有返回任何信息。
mysqlimport 应该允许一个参数设置不同的表名,这是一个基本功能...
【参考方案1】:
假设您使用的是 Linux 系统,您是否尝试过使用 alias
命令?
【讨论】:
【参考方案2】:只需创建一个符号链接:
ln -s /tmp/real_file.txt /tmp/your_table_name.txt
【讨论】:
【参考方案3】:你没有说你在哪个平台上。在 unix 上,您可以创建指向文件的符号链接:
ln -s filename.txt tablename.txt
然后在 mysqlimport 命令中使用它。
但 mysqlimport 只是 LOAD INFILE 的命令行界面,因此您也可以在命令行上执行此操作:
mysql -e "load data infile 'filename' into table TBL_NAME" dbname
【讨论】:
您仍然可以在 Windows 上使用相同语法的 mysql.. 对文件进行符号链接有点奇怪。【参考方案4】:mysqlimport 使用文件名来确定应该加载数据的表的名称。该程序通过剥离任何文件扩展名(最后一个句点及其后的任何内容)来做到这一点;然后将结果用作表名。例如,mysqlimport 将名为 City.txt 或 City.dat 的文件视为要加载到名为 City 的表中的输入。
【讨论】:
以上是关于在文件名与表名不同的地方使用 mysqlimport的主要内容,如果未能解决你的问题,请参考以下文章