## File source stream source scan table source eKuiper provides built-in support for reading file content into the eKuiper processing pipeline. The file source is usually used as a [table](../../../sqls/tables.md) and it is the default type for create table statement. File sources are also supported as streams, where it is usually necessary to set the `interval` parameter to pull updates at regular intervals. ```sql create table table1 ( name STRING, size BIGINT, id BIGINT ) WITH (DATASOURCE="lookup.json", FORMAT="json", TYPE="file"); ``` You can use [cli](../../../operation/cli/tables.md) or [rest api](../../../operation/restapi/tables.md) to manage the tables. The configure file for the file source is in */etc/sources/file.yaml* in which the path to the file can be specified. ```yaml default: # The type of the file, could be json, csv and lines fileType: json # The directory of the file relative to kuiper root or an absolute path. # Do not include the file name here. The file name should be defined in the stream data source path: data # The interval between reading the files, time unit is ms. If only read once, set it to 0 interval: 0 # The sending interval between each event in millisecond sendInterval: 0 # After read # 0: keep the file # 1: delete the file # 2: move the file to moveTo actionAfterRead: 0 # The path to move the file to after read, only valid when the actionAfterRead is 2 moveTo: /tmp/kuiper/moved # If the first line is header hasHeader: false # Define the columns. If header is defined, this will be override # columns: [id, name] # How many lines to be ignored at the beginning. Notice that, empty line will be ignored and not be calculated. ignoreStartLines: 0 # How many lines to be ignored in the end. Notice that, empty line will be ignored and not be calculated. ignoreEndLines: 0 ``` With this yaml file, the table will refer to the file *${eKuiper}/data/lookup.json* and read it in json format.