This howto will demonstrate you how to read and write to an Excel resource.
To following this howto, you should have followed the getting started guide to have knowledge of:
The below data fill command will create a excel resource named d_date.xlsx in the temporary directory.
tabli data fill --generator-selector date_dim--datagen.yml@howto date_dim.xlsx@temp
11:54:15 - INFO - The log level was set to INFO
11:54:15 - INFO - The following arguments were received (data,fill,--generator-selector,date_dim--datagen.yml@howto,date_dim.xlsx@temp)
11:54:15 - INFO - The current file system path is /home/admin/code/java-mono/tabulify-cli/.
11:54:15 - INFO - The default connection was set to: `cd`
11:54:15 - INFO - No project was found.
11:54:15 - INFO - The command (data) was found
11:54:15 - INFO - The command (data.fill) was found
11:54:16 - INFO - Starting filling the tables for the data store without the dependencies (the parent/foreign table)
11:54:16 - INFO - --buffer-size parameter NOT found. Using default : 20000
ERROR StatusLogger Could not register mbeans
java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")
at java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
at java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:358)
at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.checkMBeanTrustPermission(DefaultMBeanServerInterceptor.java:1805)
at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:318)
at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522)
at org.apache.logging.log4j.core.jmx.Server.register(Server.java:400)
at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:168)
at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:141)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:632)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:694)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:711)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:253)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:599)
at org.apache.poi.logging.PoiLogManager.getLogger(PoiLogManager.java:42)
at org.apache.poi.ooxml.POIXMLDocumentPart.<clinit>(POIXMLDocumentPart.java:56)
at com.tabulify.excel.ExcelSheet.<init>(ExcelSheet.java:66)
at com.tabulify.excel.ExcelSheet$ExcelSheetConfig.build(ExcelSheet.java:259)
at com.tabulify.excel.ExcelDataPath.getExcelSheet(ExcelDataPath.java:82)
at com.tabulify.excel.ExcelDataPath.createFile(ExcelDataPath.java:140)
at com.tabulify.excel.ExcelManager.create(ExcelManager.java:30)
at com.tabulify.fs.FsDataSystem.create(FsDataSystem.java:212)
at com.tabulify.spi.Tabulars.create(Tabulars.java:33)
at com.tabulify.transfer.TransferSourceTarget.createTarget(TransferSourceTarget.java:475)
at com.tabulify.transfer.TransferSourceTarget.targetPreOperationsAndCheck(TransferSourceTarget.java:302)
at com.tabulify.transfer.TransferManager.runCrossTransfer(TransferManager.java:237)
at com.tabulify.transfer.TransferManager.run(TransferManager.java:600)
at com.tabulify.transfer.Transfers.transfers(Transfers.java:52)
at com.tabulify.tabli.TabliDataTransferManager.runAndGetFeedBacks(TabliDataTransferManager.java:384)
at com.tabulify.tabli.TabliDataFill.run(TabliDataFill.java:72)
at com.tabulify.tabli.TabliData.run(TabliData.java:105)
at com.tabulify.tabli.Tabli.main(Tabli.java:295)
at javademo.run(javademo.java:3)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at net.bytle.docExec.DocExecutorUnit.eval(DocExecutorUnit.java:203)
at net.bytle.docExec.DocExecutor.execute(DocExecutor.java:270)
at net.bytle.docExec.DocExecutor.run(DocExecutor.java:125)
at com.tabulify.doc.DocRun.main(DocRun.java:154)
at com.tabulify.doc.DocRunTest.docTest(DocRunTest.java:17)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at org.junit.vintage.engine.execution.RunnerExecutor.execute(RunnerExecutor.java:42)
at org.junit.vintage.engine.execution.VintageExecutor.executeClassesAndMethodsSequentially(VintageExecutor.java:93)
at org.junit.vintage.engine.execution.VintageExecutor.executeAllChildren(VintageExecutor.java:73)
at org.junit.vintage.engine.VintageTestEngine.execute(VintageTestEngine.java:70)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:201)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:170)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:94)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:59)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:142)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:58)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:103)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:85)
at org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:47)
at org.junit.platform.launcher.core.InterceptingLauncher.lambda$execute$1(InterceptingLauncher.java:39)
at org.junit.platform.launcher.core.ClasspathAlignmentCheckingLauncherInterceptor.intercept(ClasspathAlignmentCheckingLauncherInterceptor.java:25)
at org.junit.platform.launcher.core.InterceptingLauncher.execute(InterceptingLauncher.java:38)
at org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:47)
at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:63)
at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57)
at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
11:54:16 - INFO - The target data operation (CREATE) was executed against the target (date_dim.xlsx@temp)
Source Target Latency (ms) Row Count Error Message
--------------- ------------------ ------------ --------- ----- -------
date_dim@memgen date_dim.xlsx@temp 1126 1000
11:54:17 - INFO - Latency Time: 0:0:1.248 (hour:minutes:seconds:milli)
11:54:17 - INFO - Ie (1248) milliseconds
11:54:17 - INFO - Done. Bye !
11:54:17 - INFO - To not see the `info` log, you can set the log level to `tip` with `tabli conf set --log-level tip`
Check the attributes with the data info command.
tabli data info date_dim.xlsx@temp
What is the data of the file with the data head command?
tabli data head --limit 30 d_date.xlsx@temp