如何正确使用Sybase LOAD TABLE?
How to use Sybase LOAD TABLE correctly?
我一直在使用 ISQL (SQLAnywhere 12) 使用 INPUT INTO 将数据从 CSV 导入现有的 table,但从未 运行 遇到问题。然而,今天我需要将数据导入到包含自动递增列的 table 中,并且认为我只需要将该列留空,所以我尝试使用仅包含 1 行数据的文件(为了安全起见) ).原来它在自动增量字段中导入了 0 而不是下一个整数值。
查看 Sybase documentation,似乎我应该改用 LOAD TABLE,但示例看起来有点复杂。
我的问题如下...
- 文档说 CSV 文件需要在数据库服务器上而不是客户端上。我无权访问数据库服务器本身 - 我可以从 ISQL 远程加载文件吗?
- 如何定义我正在加载的 table 的列?如果我只将数据加载到几列中并将其余列保留为 NULL 怎么办?
- 确认一下,这会将现有数据保留在 table 中,并使用 CSV 中的任何内容简单地添加到其中?
非常感谢。
是的。查看 LOAD TABLE
的 online documentation - 您可以使用 USING CLIENT FILE
子句。
您可以在 table 名称后的括号中指定列名,即 LOAD TABLE mytable (col1, col2, col3) USING CLIENT FILE 'mylocalfile.txt'
。如果该列可为空,则此处未列出的任何列都将设置为 NULL,如果不是,则等效于空字符串 - 这就是您的自动增量列设置为 0 的原因。您可以使用 DEFAULTS ON
子句来获取什么你要
是,table 中的现有数据不受影响。
我一直在使用 ISQL (SQLAnywhere 12) 使用 INPUT INTO 将数据从 CSV 导入现有的 table,但从未 运行 遇到问题。然而,今天我需要将数据导入到包含自动递增列的 table 中,并且认为我只需要将该列留空,所以我尝试使用仅包含 1 行数据的文件(为了安全起见) ).原来它在自动增量字段中导入了 0 而不是下一个整数值。
查看 Sybase documentation,似乎我应该改用 LOAD TABLE,但示例看起来有点复杂。
我的问题如下...
- 文档说 CSV 文件需要在数据库服务器上而不是客户端上。我无权访问数据库服务器本身 - 我可以从 ISQL 远程加载文件吗?
- 如何定义我正在加载的 table 的列?如果我只将数据加载到几列中并将其余列保留为 NULL 怎么办?
- 确认一下,这会将现有数据保留在 table 中,并使用 CSV 中的任何内容简单地添加到其中?
非常感谢。
是的。查看
LOAD TABLE
的 online documentation - 您可以使用USING CLIENT FILE
子句。您可以在 table 名称后的括号中指定列名,即
LOAD TABLE mytable (col1, col2, col3) USING CLIENT FILE 'mylocalfile.txt'
。如果该列可为空,则此处未列出的任何列都将设置为 NULL,如果不是,则等效于空字符串 - 这就是您的自动增量列设置为 0 的原因。您可以使用DEFAULTS ON
子句来获取什么你要是,table 中的现有数据不受影响。